2017-08-19 4 views
0

を使用して、特定の外部キーにオブジェクトを追加するには、次のアルバムに曲(これ)を添加するは、私の見解からCREATEVIEWジャンゴ

class SongCreate(CreateView): 
    model = Song 
    fields = ['album', 'name'] 

私の機能は、しかし、アルバムAの詳細テンプレート内にある、私は曲のアルバムは自動的に「A」になるはずなので、入力はアルバムではなく名前のみにします。上記のコードをどのように動作させるのですか?私のURLから

url(r'album/(?P<pk>[0-9]+)/song/add/$', views.SongCreate.as_view(), name='song-add') 
+0

あなたがデフォルトを設定しようとしたのをモデル? –

+0

私は何をデフォルトとして置くのですか? –

+0

[CreateViewでForeignKeyを設定する方法は?](https://stackoverflow.com/questions/10382838/how-to-set-foreignkey-in-createview)の可能な複製 –

答えて

0

あなたはget_initialメソッドを使用することができます

class SongCreate(CreateView): 
    model = Song 
    fields = ['album', 'name'] 

    def get_initial(self): 
     return { 
      'album': Album.objects.get(id=self.kwargs.get('pk')), 
     } 

それとも、form_validメソッドを使用することができます

class SongCreate(CreateView): 
    model = Song 
    fields = ['name'] 

    def form_valid(self, form): 
     form.instance.album = Album.objects.get(id=self.kwargs.get('pk')) 
     return super(SongCreate, self).form_valid(form) 
関連する問題