我已经创建了播放列表的模型形式和这样的项目:
class playlistmodel(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=200)
def __unicode__(self):
return self.title
class itemsmodel(models.Model):
playlist = models.ForeignKey(playlistmodel)
item = models.TextField()
def __unicode(self):
return self.item
class playlistform(ModelForm):
class Meta:
model = playlistmodel
class itemsform(ModelForm):
class Meta:
model = itemsmodel
我的播放列表视图:
def playlistview(request):
if request.method == 'POST':
form = playlistform(request.POST)
if form.is_valid():
data = form.save(commit=False)
data.user = request.user
a = data.save()
return render_to_response('playlist.html', {'data': a})
else:
form = playlistform()
playlistmodel.user.id = request.user.id
return render_to_response('playlist.html', {'form': form}, context_instance=RequestContext(request))
我还设置了登录脚本。如果您需要创建播放列表,则需要登录,问题是我在登录后尝试创建播放列表时,它会在下拉组合框中显示所有用户,以选择哪个用户并输入播放列表的标题。如果我想删除那个无用的下拉框怎么办?它还显示项目页面,例如在下拉框中选择播放列表并输入项目。
谢谢。
答案 0 :(得分:3)
也许你需要explicitly include or exclude what fields you want displayed to the user。
然后,在将对象保存到数据库之前,必须手动更新排除对象的部分。请查看commit=False
方法的ModelForm.save()
参数为described in the documentation。
例如,您的代码可能如下所示:
if form.is_valid():
obj = form.save(commit=False)
obj.user = request.user
obj.save()