【问题标题】:Adding an object to a specific foreign key using CreateView django使用 CreateView django 将对象添加到特定外键
【发布时间】:2017-08-19 17:09:00
【问题描述】:
在我看来:
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')
【问题讨论】:
标签:
django
django-class-based-views
【解决方案1】:
你可以使用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)