ModelForm没有保存BooleanField的默认值

时间:2017-08-24 12:22:27

标签: django django-models

我有以下型号:

class TransType(models.Model):
    typeName = models.CharField(max_length=200)
    isActive = models.BooleanField(default=True, blank=True)

    def __str__(self):
        return self.typeName

每当我在不指定isActive值的情况下创建新对象时,即使我已将默认值设置为True,它也会将isActive设置为false的对象保存。这可能是什么问题?

编辑:

<form method="POST" action="{% url 'trans:createmode' %}" class="modal-content form-horizontal" id="creator">
  {% csrf_token %} {{ form }}
  <label for="mode" class="col-sm-3 control-label">Transport Mode</label>
  <input type="text" name="typeName" maxlength="200" class="form-control" required="required" id="typeName">
  <input type="submit" class="btn btn-fill btn-success pull-right" id="submit" value="Save">
</form>

2 个答案:

答案 0 :(得分:1)

你可以尝试这样吗

model.py

class TransType(models.Model):
    typeName = models.CharField(max_length=200)
    isActive = models.BooleanField(default=True)

    def __str__(self):
        return self.typeName

只需删除 blank = True ,我认为它一定有效。

去django shell并且喜欢

object = TransType()
object. typeName = 'test'
object.save()

它必须正常工作

答案 1 :(得分:1)

我假设您正在为TransType模型使用ModelForm。 blank=True表示字段可以在格式中为空,不是必需的。

如果表单中的isActive为空,则值为&#39; &#39;并将被False视为BooleanField,在django shell中进行测试:

from django.forms.fields import BooleanField
field = BooleanField()
field.to_python('')  # Results False
field.to_python('Test')  # Results True
field.to_python(True)  # Results True

建议:您可以在表单字段中添加initial=True,或从“模型”字段中删除blank=True,以便在表单中显示该字段。