django createview如何获取创建的对象

时间:2012-11-09 14:00:40

标签: django django-class-based-views create-view

我有两个连接的形式。基本上用户填写第一种形式,然后重定向到第二种形式,这增加了第一种形式的数据的价值。 例如。我有一个表格电影(第一个表格),然后我被重定向到表格(演员),将演员添加到电影中。

在我的情况下,电影= Chiamata和演员= Offerta(我保留意大利人的名字,我需要的东西:D)

这些是我在urls.py中的网址

url(r'^chiamata/$', ChiamataCreate.as_view(),name='chiamata_create'),
url(r'^chimamata/(?P<pk>\d+)/offerta$', OffertaCreate.as_view(), name='offerta_create'),

我创建了这个视图

class ChiamataCreate(CreateView):
    template_name = 'chiamata_form.html'
    form_class = ChiamataForm
    success_url=reverse_lazy('offerta_create',args=(??,))

现在问题是如何获得chiamataForm创建的对象的PK。我需要将它添加到offerta_create的网址。

2 个答案:

答案 0 :(得分:44)

也许您可以使用get_success_url()方法(see reference

在这种情况下,它类似于:

def get_success_url(self):
    return reverse('offerta_create',args=(self.object.id,))

答案 1 :(得分:0)

请在Why doesn't self.object in a CreateView have an id after saving to the database?上看到接受的答案 - 一旦我删除了&#34; id&#34;我的模型中的字段,让Django在每个模型上默认为自己的id AutoField,如答案中所推荐的那样,self.object.id在我的CreateView中工作正常。