控制Django表单输入

时间:2012-01-19 03:21:10

标签: django django-models django-forms

我有一个视频模型,将“喜欢”存储为User的多个字段。

e.g

class Video(models.Model):
    ...
    likes = models.ManyToManyField(User)
    ....

当我创建基于视频Likes的ModelForm时,会显示为包含所有用户列表的下拉列表。这显然是我想要的。我希望特定用户能够从此列表中添加/删除自己的名称。如何将“喜欢”显示为复选框,并且仍然可以正确验证表单?

2 个答案:

答案 0 :(得分:3)

在您的模型表单中,为喜欢创建自定义字段;选中此字段后,请将likes设置为request.user

from django import forms

class VideoForm(forms.ModelForm):
    likes = forms.BooleanField(label='Mark as favorite?')
    class Meta:
        model = Video

这会将喜欢渲染为复选框(BooleanField的默认小部件)。

答案 1 :(得分:0)

我会为此字段编写自己的小部件(或用布尔字段替换字段):https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-default-field-types-or-widgets