我有一个视频模型,将“喜欢”存储为User的多个字段。
e.g
class Video(models.Model):
...
likes = models.ManyToManyField(User)
....
当我创建基于视频Likes的ModelForm时,会显示为包含所有用户列表的下拉列表。这显然是我想要的。我希望特定用户能够从此列表中添加/删除自己的名称。如何将“喜欢”显示为复选框,并且仍然可以正确验证表单?
答案 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