gpt4 book ai didi

python - 如何在 Django 管理界面中显示向后引用的模型实例?

转载 作者:行者123 更新时间:2023-12-01 06:26:33 24 4
gpt4 key购买 nike

我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com