【问题标题】:Controlling Django form input控制 Django 表单输入
【发布时间】:2012-02-13 19:01:17
【问题描述】:

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

例如

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

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

【问题讨论】:

    标签: django django-models django-forms


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-17
        • 2018-01-19
        相关资源
        最近更新 更多