试图更好地处理django数据库关系。 任何想法都值得欣赏。
考虑以下示例模型:
class Things(models.Model):
name = models.CharField(max_length=20)
class Stuff(models.Model):
name = models.CharField(max_length=20)
information = models.ManyToManyField('Information')
things = models.ForeignKey('Things')
class Information(models.Model):
name = models.CharField(max_length=20)
stuff = models.ForeignKey('Stuff')
由syncdb
:AttributeError: 'ManyToManyField' object has no attribute 'ForeignKey'
导致错误。如果在Stuff
模型中同时包含两个字段ManyToManyField
和Foreign Key
字段,则会产生错误结果。
有没有办法让这两种关系都存在?谢谢你的意见。
我的django版本提供了更多信息:
这可能足够让你走了。为从信息到内容的
ManyToManyField
关系和ForeignKey
关系定义一个related_name
。。。那么
syncdb
就会快乐。当然,你应该确定你需要两种关系。这里的通用实体名看起来可能有些混乱。从根本上说,您会得到这样的错误:
为什么?简单地说,有两个表相互引用,这里的问题是当应用反向查找时,django将生成相同的名称,从而创建冲突。
要解决这个问题,就像错误状态一样,您需要添加
related_name
,这样django就知道如何区分不同的反向调用。抱歉,我对名字不是很有创意,这应该管用。
如果您想知道有多少
information
链接到每个stuff
,django将提供一个默认的manager,允许您返回;为此,在stuff
中不需要外键。此模型允许您执行以下查询:
stuff
X
的information
?”stuff
Y
,链接的information
是什么?”thing
Z
找到所有stuff
和information
”此外,它还允许每个
stuff
有多个information
,每个thing
有多个stuff
。在开始时写下这些问题将有助于开发准确的模型,而不必在数据库中建立不必要的链接/关系。
相关问题 更多 >
编程相关推荐