使用 CreateView django 将对象添加到特定的外键
Adding an object to a specific foreign key using CreateView django
我的观点:
class SongCreate(CreateView):
model = Song
fields = ['album', 'name']
我将歌曲 (this) 添加到专辑的功能位于专辑 A 的详细信息模板中。但是,我希望输入的只是名称而不是专辑,因为歌曲的专辑应该自动为 "A." 如何让上面的代码表现得像这样?
来自我的网址:
url(r'album/(?P<pk>[0-9]+)/song/add/$', views.SongCreate.as_view(), name='song-add')
您可以使用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)
我的观点:
class SongCreate(CreateView):
model = Song
fields = ['album', 'name']
我将歌曲 (this) 添加到专辑的功能位于专辑 A 的详细信息模板中。但是,我希望输入的只是名称而不是专辑,因为歌曲的专辑应该自动为 "A." 如何让上面的代码表现得像这样?
来自我的网址:
url(r'album/(?P<pk>[0-9]+)/song/add/$', views.SongCreate.as_view(), name='song-add')
您可以使用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)