最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Django的数据模型访问多对多键值的方法

来源:动视网 责编:小采 时间:2020-11-27 14:42:02
文档

Django的数据模型访问多对多键值的方法

Django的数据模型访问多对多键值的方法:这里先来借用一个书本(book)的数据模型作为例子: from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=50)
推荐度:
导读Django的数据模型访问多对多键值的方法:这里先来借用一个书本(book)的数据模型作为例子: from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=50)

这里先来借用一个书本(book)的数据模型作为例子:

from django.db import models

class Publisher(models.Model):
 name = models.CharField(max_length=30)
 address = models.CharField(max_length=50)
 city = models.CharField(max_length=60)
 state_province = models.CharField(max_length=30)
 country = models.CharField(max_length=50)
 website = models.URLField()

 def __unicode__(self):
 return self.name

class Author(models.Model):
 first_name = models.CharField(max_length=30)
 last_name = models.CharField(max_length=40)
 email = models.EmailField()

 def __unicode__(self):
 return u'%s %s' % (self.first_name, self.last_name)

class Book(models.Model):
 title = models.CharField(max_length=100)
 authors = models.ManyToManyField(Author)
 publisher = models.ForeignKey(Publisher)
 publication_date = models.DateField()

 def __unicode__(self):
 return self.title

访问多对多值(Many-to-Many Values)

多对多和外键工作方式相同,只不过我们处理的是QuerySet而不是模型实例。 例如,这里是如何查看书籍的作者:

>>> b = Book.objects.get(id=50)
>>> b.authors.all()
[, ]
>>> b.authors.filter(first_name='Adrian')
[]
>>> b.authors.filter(first_name='Adam')
[]

反向查询也可以。 要查看一个作者的所有书籍,使用author.book_set ,就如这样:

>>> a = Author.objects.get(first_name='Adrian', last_name='Holovaty')
>>> a.book_set.all()
[, ]

这里,就像使用 ForeignKey字段一样,属性名book_set是在数据模型(model)名后追加_set。

文档

Django的数据模型访问多对多键值的方法

Django的数据模型访问多对多键值的方法:这里先来借用一个书本(book)的数据模型作为例子: from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=50)
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top