Django 复选框字段

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

我正在尝试添加一个复选框,如果勾选将使我的模型中的属性为 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)

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

谢谢

米洛

最佳答案

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 .

关于Django 复选框字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42768057/

相关文章:

Django 表单 - 附加到类元排除和小部件

python - 表单中的 Django DRY 函数

python - 聚合数据时无法获取 <class 'django.db.models.QuerySet' > 的 repr

Django 无法导入模型

python - IntegerField 只接受 11 位数字(不小于 11,不大于 11)

django - “QuerySet”对象没有属性 'id'

django - 如何在 djangocms 插件中集成 django 应用程序表单

django - 如何使用Django,Nginx,Docker和Traefik管理服务媒体文件?

css - Django 管理 css 问题

Django-easy-pdf,文档每一页上的标题