【发布时间】:2012-01-02 19:58:31
【问题描述】:
我尝试描述模型,但 Django 报告了一些错误。我可以修复一些错误,但无法修复所有错误。然后我不会更改它以更清楚地描述我的目的:
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=128)
father_is = models.ForeignKey('self')
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
led_by = models.ForeignKey(Person)
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)
invited_by = models.ForeignKey(Person) # who invited this person to this group
您能建议我一个解决方案吗? (这是 2 个字段的错误:led_by 和邀请_by) 非常感谢你!
PS:我刚开始学习 Django。
编辑: 现在我知道这是关于 Django 的 ORM 的限制。 离题!
【问题讨论】:
-
错误:一个或多个模型未验证:member.group:字段“led_by”的访问器与相关的 m2m 字段“Person.group_set”冲突。在“led_by”的定义中添加一个related_name 参数。 member.group:中间模型 Membership 对 Person 有多个外键,这是不明确的,是不允许的。 member.group:m2m 字段“members”的访问器与相关字段“Person.group_set”发生冲突。在“members”的定义中添加一个related_name 参数。
-
member.membership:字段“person”的访问器与相关字段“Person.membership_set”发生冲突。将related_name 参数添加到“人”的定义中。 member.membership:字段“invited_by”的访问器与相关字段“Person.membership_set”发生冲突。在“invited_by”的定义中添加一个related_name 参数。
-
您是否尝试过查看消息,或者搜索其中的任何条款?你会发现这里已经得到了完整的回答。
-
@DanielRoseman 没有责任解决你的问题。当您在 Stack Overflow 上发布问题时,我们希望您已经做出了合理的努力来自己解决问题,您已经研究了错误消息,并且您已经尝试了您的研究告诉您的一切。虽然这里的用户愿意帮助您,但我们不愿意为您调试代码。
标签: django-models