【发布时间】:2018-03-02 21:45:26
【问题描述】:
我正在根据教程构建 Django 网站。该模型称为 Post,如下所示:
class Post(models.Model):
author = models.ForeignKey('auth.User', verbose_name='Author')
title = models.CharField(max_length=200, verbose_name='Titel')
text = HTMLField()
created_date = models.DateTimeField(default=timezone.now, verbose_name='Erstellungsdatum')
published = models.BooleanField(blank=True, verbose_name='Veröffentlichung')
tags = models.ManyToManyField(Tag, blank=True)
class Meta:
verbose_name = 'Artikel'
verbose_name_plural = 'Artikels'
ordering = ['-created_date']
def publish(self):
self.published = True
self.save()
def __str__(self):
return self.title
如你所见,我创建了一些字段blank=True。
django 现在执行的迁移/sql 如下所示:
ALTER TABLE "blog_post" RENAME TO "blog_post__old";
CREATE TABLE "blog_post" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"published" bool NOT NULL, "title" varchar(200) NOT NULL, "text" text NOT
NULL, "created_date" datetime NOT NULL, "author_id" integer NOT NULL
REFERENCES "auth_user" ("id"));
INSERT INTO "blog_post" ("id", "title", "text", "created_date", "author_id",
"published") SELECT "id", "title", "text", "created_date", "author_id",
"published" FROM "blog_post__old";
DROP TABLE "blog_post__old";
CREATE INDEX "blog_post_author_id_dd7a8485" ON "blog_post" ("author_id");
COMMIT;
它只是忽略空白值并使每个字段都不为空。 我在question 也看到了这一点
问题是,如果我在模板中实现表单,则此字段是“必填”输入,因此如果未选中复选框,则无法提交表单。
提前致谢!
forms.py
from django import forms
from tinymce.widgets import TinyMCE
from .models import Post
class PostForm(forms.ModelForm):
text = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30, 'class': 'materialize-textarea'}))
published = forms.BooleanField(widget=forms.CheckboxInput())
class Meta:
model = Post
fields = ('title', 'published', 'text', 'tags')
模板
{% extends 'blog/base.html' %}
{% block content_block %}
<div class="row">
<h1>Edit Post</h1>
</div>
<div class="row">
<form class="col s12" action="" method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="waves-effect waves-light btn"><i class="material-icons left">save</i>Speichern</button>
</form>
</div>
{% endblock %}
【问题讨论】:
标签: python django django-models django-forms