作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 2 个模型之间有 ManyToMany 引用,相当于 Django's Many-To-Many example :
# models.py
from django.db import models
class Publication(models.Model):
title = models.CharField(max_length=30)
class Meta:
ordering = ['title']
def __str__(self):
return self.title
class Article(models.Model):
headline = models.CharField(max_length=100)
publications = models.ManyToManyField(Publication)
class Meta:
ordering = ['headline']
def __str__(self):
return self.headline
# admin.py
from .models import Article, Publication
admin.site.register(Article)
admin.site.register(Publication)
在默认的 Django 管理界面中,我可以看到每篇文章都链接到了哪些出版物。但我没有看到任何出版物都链接到哪篇文章。如何将此信息添加到管理界面?
最佳答案
Django 允许您使用每个对象上的 modelname_set
属性来反向查找 M2M 关系。您可以通过在 admin.py
中定义一个可调用函数来使用它,并将其包含在 list_display 中,如下所示:
admin.py
@admin.register(Publication)
class PublicationAdmin(admin.ModelAdmin):
list_display = ['title', 'articles']
def articles(self, object):
return ", ".join([str(a) for a in object.article_set.all()])
admin.site.register(Article)
当然,您可以修改文章
的显示方式。这是一个简单的例子。请注意,如果您的出版物有很多文章,这可能会变得很麻烦。
关于python - 如何在 Django 管理界面中显示向后引用的模型实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60117110/
我是一名优秀的程序员,十分优秀!