Django 双向关系

Kev*_*uck 2 django object-relationships

我正在建立一个博客网站,并有关于类别和帖子的模型。帖子与类别之间存在多对多关系。

class Post(models.Model):
     categories = models.ManyToManyField(Category)
Run Code Online (Sandbox Code Playgroud)

除了在模板的类别列表中我只想加载实际有帖子的类别之外,一切都正常。

如果一个类别是空的,我不想显示它,我已经尝试在 Category to Post 中定义一个关系,以允许我使用类似{{ if category.posts }}. 目前使用类别中的另一个多对多字段目前在管理中给了我一个额外的字段,我并不真正想要或觉得需要它。

如何最好地驾驭这种关系,或创造一种合适的关系?

干杯凯夫

sch*_*cki 5

Django 会自动在任何 ForeignKey 或 ManyToMany 关系的相关模型上创建一个字段。您可以通过 related_name 选项控制相关模型上的字段名称,如下所示:

class Post(models.Model):
 categories = models.ManyToManyField(Category,related_name='posts')
Run Code Online (Sandbox Code Playgroud)

这样,您的方法无需任何其他字段即可工作。顺便说一句,如果您省略 related_name 参数,Django 将默认使用 [field_name]_set 创建一个。