我有一个代表公司职位的模型:
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_qualification
或base_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),
有没有办法使用通用视图执行此操作,还是我必须自己查看?这很简单,就像使用常规视图的蛋糕一样,但为了简单起见,我正在尝试将所有内容迁移到通用视图。
答案 0 :(得分:0)
如果您希望编辑表单是针对InnerModel的相关实例之一,但是您希望在URL中传递PKM for ParentModel(尽管我可以告诉您这是您所要求的,但它不是非常清楚),你将不得不使用包装器视图。否则,Django的通用视图如何能够神奇地知道你要编辑哪个相关对象?
根据您希望以这种方式编辑的“众多模型”的相关对象属性的一致性,您很有可能只使用一个包装器视图而不是许多包装器视图。很难说没有看到更多的代码。
答案 1 :(得分:-1)
正如documentation for the update_object
generic view中所述,如果您在网址定义中的ParentModel
中'model'
键的值为options_dict
,则应该全部设置。