[英]Django deep admin.TabularInline
B.ForeignKey(A)
django 可以通過TabularInline
在one
管理page
顯示它:
管理文件
from django.contrib import admin
from myapp2 import models
# Register your models here.
class TabularInlineB(admin.TabularInline):
model=models.B
class AdminA(admin.ModelAdmin):
inlines=[TabularInlineB, ]
admin.site.register(models.A, AdminA)
模型.py
from django.db import models
# Create your models here.
class A(models.Model):
name=models.CharField(max_length=10)
class B(models.Model):
name=models.CharField(max_length=10)
a=models.ForeignKey(A)
但是如果我們像下面那樣向B
add
另一個ForeignKey
關系,
B.ForeignKey(A)
C.ForeignKey(B)
那么如何在one admin page
顯示所有模型?
管理文件
from django.contrib import admin
from myapp2 import models
class TabularInlineC(admin.TabularInline):
model=models.C
class TabularInlineB(admin.TabularInline):
model=models.B
inlines=[TabularInlineC, ]
class AdminA(admin.ModelAdmin):
inlines=[TabularInlineB, ]
admin.site.register(models.A, AdminA)
. 模型.py
from django.db import models
# Create your models here.
class A(models.Model):
name=models.CharField(max_length=10)
class B(models.Model):
name=models.CharField(max_length=10)
a=models.ForeignKey(A)
class C(models.Model):
b=models.ForeignKey(B)
name=models.CharField(max_length=10)
我有同樣的問題,我設法做到了。 我不知道這是否正是您需要的,但如果不是,請告訴我,我將刪除我的答案。
你可以這樣做:
管理文件
from django.contrib import admin
from myapp2 import models
class TabularInlineC(admin.TabularInline):
model=models.C
class TabularInlineB(admin.TabularInline):
model=models.B
class AdminA(admin.ModelAdmin):
inlines=[TabularInlineB, TabularInlineC ]
admin.site.register(models.A, AdminA)
這將呈現兩個內聯,在模型 A 的管理頁面中各有一個部分。請注意,在此代碼中,模型 B 和模型 C 都具有模型 A 的外鍵。實際上,這與您在您的模型中使用的模式不完全相同問題,但在我看來,這是實現您想要的最簡單的方法。 您將兩個模型指向相同的事實,允許您考慮此模型具有父模型。 因此,如果您能找到指向的公共字段,您將能夠以相同的形式添加兩個內聯,因為兩個模型都將鏈接到模型 A。
此外,您可以做的另一件有趣的事情是將classes = ['collapse']
到class TabularInlineB
和class TabularInlineC
這將允許在管理頁面的這兩個部分上折疊。
希望能幫助到你 !
編輯
如果您絕對需要只渲染一個包含兩個模型的內聯,我也不確定是否可以使用 Django 開箱即用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.