如何避免这个下拉组合框?

时间:2012-01-06 19:51:58

标签: python django django-models django-forms

我已经创建了播放列表的模型形式和这样的项目:

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))

我还设置了登录脚本。如果您需要创建播放列表,则需要登录,问题是我在登录后尝试创建播放列表时,它会在下拉组合框中显示所有用户,以选择哪个用户并输入播放列表的标题。如果我想删除那个无用的下拉框怎么办?它还显示项目页面,例如在下拉框中选择播放列表并输入项目。

谢谢。

1 个答案:

答案 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()