![](/img/trans.png)
[英]Django: show the count of related objects in admin list_display
[英]How to show related objects in Django/Admin?
我有 2 个模型:
from django.db import models
class Category(models.Model):
icon = models.ImageField(upload_to = 'thing/icon/')
image = models.ImageField(upload_to = 'thing/image/')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
title = models.CharField(max_length=200)
slug = models.SlugField()
desc = models.TextField(max_length=1000)
def __str__(self):
return self.title
def __unicode__(self):
return self.title
class Thing(models.Model):
icon = models.ImageField(upload_to = 'thing/icon/')
image = models.ImageField(upload_to = 'thing/image/')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
title = models.CharField(max_length=200)
slug = models.SlugField()
desc = models.TextField(max_length=1000)
content = models.TextField()
category = models.ForeignKey('Category')
def __str__(self):
return self.title
def __unicode__(self):
return self.title
我正在使用 Django 的管理站点进行基本的 CRUD 操作。 如果我在管理中选择一个类别,我需要显示类别中的所有事物。
您可以使用“内联”在该类别的管理详细信息中可视化和编辑某个类别的事物:
在 admin.py 文件中,为 Thing (ThingInline) 创建一个 Inline 对象并修改您的 CategoryAdmin 类以具有 ThingInline 类型的内联,如下所示:
...
class ThingInline(admin.TabularInline):
model = Thing
class CategoryAdmin(admin.ModelAdmin):
inlines = [
ThingInline,
]
...
有关更多详细信息,这是管理内联文档: https : //docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects
像这样更新admin.py
文件。
from django.contrib import admin
from .views import Category, Thing
class CategoryAdmin(admin.ModelAdmin):
inlines = [
ThingInline,
]
class ThingInline(admin.TabularInline):
model = Thing
admin.site.register(Category, CategoryAdmin)
admin.site.register(Thing)
有两个内联选项TabularInline
和StackedInline
几分钟前,搜索如何解决类似问题,我终于找到了解决方案。
您实际上也必须遵循@Matteo Scotuzzi 的回答,然后
在您创建这些模型的应用程序中的 admin.py 中,您必须在@Matteo 代码段下方声明如下:
admin.site.register(Category, CategoryAdmin)
这足以使所有“事物”出现在您的 Django 管理相应页面中的“类别”中,即“类别”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.