1

我尝试使用 django 构建的应用程序模型的一部分基于三层结构,如下所示:

 class A(models.Model):
     name = models.TextField()

 class B(models.Model):
     related_A = models.ForeignKey(A)
     info = models.TextField()

 class C(models.Model):
     related_B = models.ForeignKey(B)
     other_infos = models.TextField()

所以A是由一些B组成的,而B又是由一些C组成的。由于 Django admin 还不接受嵌套的内联表单,我认为理想的方法是使用这种工作流程:会有一个“管理页面”,它会给我一个点击链接,称为“添加这个 A" 的一些 Bs,并使用内联 C 表单为我提供一个带有 B 表单的页面。

有没有办法简单地从我没有看到的管理员网站上做到这一点,或者我应该考虑扩展管理员默认应用程序?

一些澄清

假设您对大陆、国家和地区进行统计。我的目标是有一个清晰的结构,将一个国家添加到一个大陆,将一个地区添加到一个国家。理想情况下,管理界面的用户不能“立即”添加 Country ;她或他需要浏览一个必须选择大陆的页面。理想情况下,大陆只有一个页面,包含一个内联形式的国家,每个表格都有一个内联形式的地区。

由于嵌套的内联表单似乎不是 Django 1.3 中的一个功能,我正在寻找一种在管理站点中具有某种“工作流程”的方法:用户将首先在第一个屏幕中单击“大陆”;然后它会显示一个大陆列表;点击一个大陆将显示与该大陆相关的国家列表;最后,用户可以编辑 Country 表单,显示一些内联区域表单以允许在同一页面上添加国家和地区。

我希望这个具体的例子更容易理解......

4

2 回答 2

0

最简单的方法是Country用作起点:在其表单页面中,您可以内联编辑Region以及强制员工从现有Continent的中选择或通过单击添加新的+

您还可以修改ModelAdmin以打开Country页面并填充pk已保存的页面Continent,这更加困难。也检查这个帖子

此外,可以模仿ForeignKey指向AinC和内联编辑BCin A,就像这样GenericForeignKey做一样。但是,对于大多数用途来说,这很难而且矫枉过正......

于 2012-06-22T13:07:11.893 回答
0

你可以使用 GenericForeginKey() 来解决限制问题。

参考https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/

于 2012-06-22T07:24:33.257 回答