【问题标题】:Django checkbox fieldDjango 复选框字段
【发布时间】:2017-03-13 15:56:58
【问题描述】:

我正在尝试添加一个复选框,如果勾选该复选框,我的模型中的属性将变为 false。

我的模型是:

 class Topic(models.Model):
        """A topic the user is learning about"""
        text = models.CharField(max_length=200)
        date_added = models.DateTimeField(auto_now_add=True)
        owner = models.ForeignKey(User)
        public = False

My forms.py (where the checkbox should go) is:

class TopicForm(forms.ModelForm):
    class Meta:
        model = Topic
        fields = ['text']
        labels = {'text': ''}

还有我的功能:

def topics(request):
    """Show all topics."""
    topics = Topic.objects.filter(owner=request.user).order_by('date_added')
    context = {'topics': topics}
    return render(request, 'learning_logs/topics.html', context)

您能否告诉我我需要更改什么,以便在选中表单中的复选框时,公共变量变为 True,然后函数 Topics 显示公共主题以及所有者。

谢谢

米洛

【问题讨论】:

    标签: django django-models django-forms django-views


    【解决方案1】:

    models.BooleanField 呈现为 as a checkbox。是 TrueFalse。所以:

    # models.py
    
    class Topic(models.Model):
        # ...
        public = models.BooleanField(default=True)
    
    
    # forms.py
    
    class TopicForm(forms.ModelForm):
        class Meta:
            model = Topic
            fields = ["text", "public"]
            labels = {"text": "", "public": "label for public"}
    

    如果您还想接受null 值,那么您应该使用models.NullBooleanField

    【讨论】:

    • 但是该字段不会显示在详细视图中,对吧?
    • 它在详细视图中呈现为复选框。是什么让你不这么认为?
    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2014-01-04
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多