簡體   English   中英

如何在 Django/Admin 中顯示相關對象?

[英]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)

有兩個內聯選項TabularInlineStackedInline

幾分鍾前,搜索如何解決類似問題,我終於找到了解決方案。

您實際上也必須遵循@Matteo Scotuzzi 的回答,然后

在您創建這些模型的應用程序中的 admin.py 中,您必須在@Matteo 代碼段下方聲明如下:

admin.site.register(Category, CategoryAdmin)

這足以使所有“事物”出現在您的 Django 管理相應頁面中的“類別”中,即“類別”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM