Django管理员申请主/详细页面

时间:2011-03-01 23:02:34

标签: python django django-admin

在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的管理员编辑数据,尝试扩展/自定义管理员这样做是不是一个好主意?关于如何做到这一点的任何指示?

谢谢!

1 个答案:

答案 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,
    ]