django模拟两个类之间的依赖关系

时间:2014-06-02 11:25:12

标签: python django models

我的django应用程序中有两个模型,其中两个模型都包含另一个类的多个实例。例如)假设一个主题可以包含许多书籍,一本书可能属于许多主题。因此,两者必须具有另一个的多个领域。我的代码:

class Topic(models.Model):
    books = models.ManyToManyField(Book)

class Book(models.Model):
    topics = models.ManyToManyField(Topic)

现在的问题是,我得到一个错误' Book'没有定义。我怎么摆脱这个?

3 个答案:

答案 0 :(得分:1)

将模型的名称作为字符串传递给ManyToManyField,而不是模型本身,see hereForeignKey的行为方式相同)。

代码:

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')

As described in the docs