B.ForeignKey(A)
django可以通过one
在page
admin TabularInline
中显示:
admin.py
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)
models.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.ForeignKey(A)
C.ForeignKey(B)
然后如何在one admin page
中显示所有模型?
admin.py
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)
models.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)
答案 0 :(得分:1)
我有同样的问题,我设法做到了。我不知道它是否正是您所需要的,但请告诉我,如果不是我将删除我的答案。
你可以这样做:
<强> Admin.py 强>
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。