Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ModelForm未保存BooleanField默认值_Django_Django Models - Fatal编程技术网

Django ModelForm未保存BooleanField默认值

Django ModelForm未保存BooleanField默认值,django,django-models,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值的情况下创建新对象时,它都会将isActive设置为false保

我有以下型号:

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

    def __str__(self):
        return self.typeName
每当我在未指定isActive值的情况下创建新对象时,它都会将isActive设置为false保存对象,即使我已将默认设置为True。这里可能有什么问题

编辑:

<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>

{%csrf_令牌%}{{form}
运输方式

嗨,你能这样试试吗

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()

它一定在工作

我假设您使用的是
TransType
model的ModelForm。
blank=True
表示表单中的字段可以为空,这不是必需的

如果
isActive
在表单中为空,则值将为“”,并将被
布尔字段处理为
False
,在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
,以便表单中需要该字段。

显示表单代码please@BearBrown我添加了iti mean form类,更好的是,如果没有blank=True部分,它将无法正常工作。我只是添加它来检查它是否有效