在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()
有没有办法使用admin在同一页面上编辑项目及其详细信息,其形式如下所示:
title: < >
pub_date: < >
details:
+-----------------+----------------------+-------------------------+
| name | value | diplay order |
+-----------------+----------------------+-------------------------+
|< >|< >|< >|
|< >|< >|< >|
|< >|< >|< >|
|< >|< >|< >|
|< >|< >|< >|
+-----------------+----------------------+-------------------------+
其中< >
将是数据输入输入类型的占位符。
所以,我的问题是:我可以使用admin从父母的角度编辑foreign key
关系吗?如果没有办法用这种方式用Django的管理员编辑数据,尝试扩展/自定义管理员这样做是不是一个好主意?关于如何做到这一点的任何指示?
谢谢!
答案 0 :(得分:10)
这实际上是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,
]