Django 管理应用的主从页面
考虑一下这个在Django中的简化模型:
class Item(models.Model):
title = models.CharField(max_length=200)
pub_date = models.DateTimeField()
class ItemDetail(models.Model):
item = models.ForeignKey(Item)
name = models.CharField(max_length=200)
value = models.CharField(max_length=200)
display_order = models.IntegerField()
有没有办法在同一页面上使用管理界面编辑一个项目及其详细信息,表单的样子大概是这样的:
title: < >
pub_date: < >
details:
+-----------------+----------------------+-------------------------+
| name | value | diplay order |
+-----------------+----------------------+-------------------------+
|< >|< >|< >|
|< >|< >|< >|
|< >|< >|< >|
|< >|< >|< >|
|< >|< >|< >|
+-----------------+----------------------+-------------------------+
其中 < >
是用来输入数据的占位符。
所以,我的问题是:我能否从父对象的角度使用管理界面来编辑一个 foreign key
(外键)关系?如果Django的管理界面没有办法这样编辑数据,那尝试扩展或自定义管理界面来实现这个功能是否是个好主意?有没有什么建议可以帮助我实现这个?
谢谢!
1 个回答
14
其实,Django在处理关系时,只有一种方式比较好用,就是从父级到子级。而反过来,从子级直接编辑父级就比较麻烦。
如果你想要达到你想要的格式,可以看看ModelAdmin的内联功能:
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin
class ItemDetailInline(admin.TabularInline):
model = ItemDetail
class ItemAdmin(admin.ModelAdmin):
inlines = [
ItemDetailInline,
]