Django 模型:两个类之间的相互引用以及无法在 python 中使用前向声明

发布于 2024-12-02 15:03:01 字数 332 浏览 0 评论 0原文

我定义了两个模型,其中每个模型都引用另一个模型,如下所示:

class User(models.Model):
    # ...
    loves = models.ManyToManyField(Article, related_name='loved_by')

class Article(models.Model):
    # ...
    author = models.ForeignKey(User)

您看,问题是两个类都相互引用。无论这两个类以什么顺序实现,python 总是会引发 NameError 异常,抱怨其中一个类未定义。

I have defined two models where each one references the other, like so:

class User(models.Model):
    # ...
    loves = models.ManyToManyField(Article, related_name='loved_by')

class Article(models.Model):
    # ...
    author = models.ForeignKey(User)

You see, the problem is both classes references each other. No matter in what order these two classes are implemented, python always raises NameError exception, complaining either one class is not defined.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半山落雨半山空 2024-12-09 15:03:01

您可以在文档中找到解决方案:

如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身:

汽车类(models.Model):
    制造商 = models.ForeignKey('制造商')
    # ...

制造商类(型号.型号):
    # ...

You can find the solution in the docs:

If you need to create a relationship on a model that has not yet been defined, you can use the name of the model, rather than the model object itself:

class Car(models.Model):
    manufacturer = models.ForeignKey('Manufacturer')
    # ...

class Manufacturer(models.Model):
    # ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文