web-dev-qa-db-ja.com

django createview作成されたオブジェクトを取得する方法

2つの連結形式があります。基本的にユーザーは最初のフォームに入力し、次に2番目のフォームにリダイレクトされ、最初のフォームのデータに値が追加されます。例えば。ムービー(最初のフォーム)のフォームを作成した後、俳優をムービーに追加するフォーム(俳優)にリダイレクトされます。

私の場合、Movie = ChiamataおよびActor = Offerta(私は必要なものにイタリア語の名前を付けています:D)

大丈夫。

これらはurls.pyの私のURLです

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のURLに追加する必要があります。

36
EsseTi

多分あなたはget_success_url()メソッドを使うことができます( 参照を参照

この場合、次のようになります。

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

データベースに保存した後、CreateViewのself.objectにIDがないのはなぜですか? -モデルから「id」フィールドを削除したら、Djangoは、その回答で推奨されているように、各モデルで独自のID AutoFieldにデフォルトで設定されています。

0
Chirael