来自object_id或父对象的通用视图

时间:2009-06-16 01:57:50

标签: python django django-generic-views

我有一个代表公司职位的模型:

class Position(models.Model):
    preferred_q = ForeignKey("Qualifications", blank=True, null=True, related_name="pref")
    base_q = ForeignKey("Qualifications", blank=True, null=True, related_name="base")

    #[...]

它有两个“内部对象”,代表最低资格,以及该职位的“首选”资格。

我设置了一个通用视图来编辑/查看Position实例。在该页面中,我有一个链接转到另一个页面,用户可以在其中编辑每种类型的限定条件。问题是我不能只传递限定条件的主键,因为该对象可能为空(空白,null为True,这是设计)。相反,我想在URL中传递位置主键和关键字preferred_qualificationbase_qualification,如下所示:

(r'^edit/preferred_qualifications/(?P<parent_id>\d{1,4})/$', some_view),

(r'^edit/base_qualifications/(?P<parent_id>\d{1,4})/$', some_view),

有没有办法使用通用视图执行此操作,还是我必须自己查看?这很简单,就像使用常规视图的蛋糕一样,但为了简单起见,我正在尝试将所有内容迁移到通用视图。

2 个答案:

答案 0 :(得分:0)

如果您希望编辑表单是针对InnerModel的相关实例之一,但是您希望在URL中传递PKM for ParentModel(尽管我可以告诉您这是您所要求的,但它不是非常清楚),你将不得不使用包装器视图。否则,Django的通用视图如何能够神奇地知道你要编辑哪个相关对象?

根据您希望以这种方式编辑的“众多模型”的相关对象属性的一致性,您很有可能只使用一个包装器视图而不是许多包装器视图。很难说没有看到更多的代码。

答案 1 :(得分:-1)

正如documentation for the update_object generic view中所述,如果您在网址定义中的ParentModel'model'键的值为options_dict,则应该全部设置。