python - 主/详细页面的 Django 管理应用程序

标签 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       |
+-----------------+----------------------+-------------------------+
|<               >|<                    >|<                       >|
|<               >|<                    >|<                       >|
|<               >|<                    >|<                       >|
|<               >|<                    >|<                       >|
|<               >|<                    >|<                       >|
+-----------------+----------------------+-------------------------+

在哪里< >将是数据输入的输入类型的占位符。

那么,我的问题是:我可以使用管理员来编辑 foreign key 吗?从 parent 的角度看关系?如果没有办法以这种方式使用 Django 的管理员编辑数据,那么尝试扩展/自定义管理员来执行此操作是否是个好主意?有关如何执行此操作的任何说明?

谢谢!

最佳答案

这实际上是 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,
    ]

关于python - 主/详细页面的 Django 管理应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5161477/

相关文章:

python - 具有 side_effect 的模拟类属性

python - 获取 "No module named django_messages"

django - 为什么 Django 不使用我的 Registration/reset_password_done.html 模板?

django - 使用 sorl 的 django 管理面板中的缩略图

django admin 外键字段数据添加

迭代数组并删除所有 None 的 Pythonic 方式

python - 将字典值映射到 Pandas 数据框列

python - 如何使用两点的 x 和 y 坐标绘制一条线?

python - 在 pandas 中与 NaT 连接时保持一致的数据类型和时区

django - 有没有办法更改 drf-spectaulous 中序列化器自动生成的架构名称