我的django应用程序中有两个模型,其中两个模型都包含另一个类的多个实例。例如)假设一个主题可以包含许多书籍,一本书可能属于许多主题。因此,两者必须具有另一个的多个领域。我的代码:
class Topic(models.Model):
books = models.ManyToManyField(Book)
class Book(models.Model):
topics = models.ManyToManyField(Topic)
现在的问题是,我得到一个错误' Book'没有定义。我怎么摆脱这个?
答案 0 :(得分:1)
将模型的名称作为字符串传递给ManyToManyField
,而不是模型本身,see here(ForeignKey
的行为方式相同)。
代码:
class Topic(models.Model):
books = models.ManyToManyField('Book')
class Book(models.Model):
topics = models.ManyToManyField('Topic')
修改强>
我没有注意到与丹尼尔相同的事情,一味地回答了这个问题。您只需要在其中一个模型中定义此关系,而不是两种方式。答案 1 :(得分:1)
你不想要这个。 “一个主题可以包含许多书籍,一本书可能属于许多主题”在任何情况下都是对基本多对多字段的描述。仅在一侧定义它。
答案 2 :(得分:0)
在引号中使用模型的名称,例如
app1/models.py
class Topic(models.Model):
books = models.ManyToManyField('app2.Book')
app2/models.py
class Book(models.Model):
topics = models.ManyToManyField('app1.Topic')