Mat*_*lla 6 django many-to-many django-models django-orm
浏览Django文档并试图弄清楚使用"通过"参数.这是doc的链接.
这个例子:
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
Run Code Online (Sandbox Code Playgroud)
为什么Group的"成员"属性需要?成员资格的"组"外键是否足以遵循关系并访问该信息?
Chr*_*att 10
我觉得你对这个问题的看法太过分了.假设您没有使用through:
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person)
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
Django,在幕后,基本上为您创建了以下模型:
class GroupPerson(models.Model)
group = models.ForeignKey(Group)
person = models.ForeignKey(Person)
Run Code Online (Sandbox Code Playgroud)
创建Membership模型的原因是添加默认模型Django 自动创建的额外数据默认情况下,但由于您不再使用默认模式,因此您必须告诉Django使用through.基本上,你保留了Django为ManyToManyFields提供的API.
| 归档时间: |
|
| 查看次数: |
1721 次 |
| 最近记录: |