django:BooleanField,如何将默认值设置为true?

时间:2011-03-04 06:08:16

标签: django

我在django中使用BooleanField。默认情况下,它生成的复选框是未选中状态,我希望默认情况下检查状态,怎么做?

8 个答案:

答案 0 :(得分:154)

如果你只是使用香草形式(不是ModelForm),你可以设置一个字段初始值(http://docs.djangoproject.com/en/dev/ref/forms/fields/#django.forms.Field.initial),如

class MyForm(forms.Form):
    my_field = forms.BooleanField(initial=True)

如果您正在使用ModelForm,则可以在模型字段(http://docs.djangoproject.com/en/dev/ref/models/fields/#default)上设置默认值,该值将应用于生成的ModelForm,例如

class MyModel(models.Model):
    my_field = models.BooleanField(default=True)

最后,如果您想在运行时动态选择是否默认选择您的字段,则可以在initialize it时使用表单的初始参数:

form = MyForm(initial={'my_field':True})

答案 1 :(得分:132)

from django.db import models

class Foo(models.Model):
    any_field = models.BooleanField(default=True)

答案 2 :(得分:4)

我正在使用django == 1.11。得到最多投票的答案实际上是错误的。从django检查文档,它说:

  

initial - 在此字段的初始显示中使用的值。这个值           如果没有给出数据,则用作后备。

如果你深入了解表单验证过程的代码,你会发现,对于每个字段,表单都会调用它的小部件的 BooleanField来获取实际值,所以这就是我们可以注入默认值的地方。

要为CheckboxInput执行此操作,我们可以继承value_from_datadict,覆盖默认initclass CheckboxInput(forms.CheckboxInput): def __init__(self, default=False, *args, **kwargs): super(CheckboxInput, self).__init__(*args, **kwargs) self.default = default def value_from_datadict(self, data, files, name): if name not in data: return self.default return super(CheckboxInput, self).value_from_datadict(data, files, name) 功能。

BooleanField

然后在创建class ExampleForm(forms.Form): bool_field = forms.BooleanField(widget=CheckboxInput(default=True), required=False) 时使用此小部件。

platform.linux_distribution

答案 3 :(得分:0)

public class Product{
 public int Id { get; set; }

 public string Name { get; set; }

 [JsonIgnore]
 public byte[] Image { get; set }
}

// controller 

public List<Product> Get(){
 return db.Products.ToList();
}

public FileResult GetImage(int id){
  var img = db.Products.First(x=> x.Id == id).Image;
  return File(img, System.Net.Mime.MediaTypeNames.Application.Octet, "test");
}

/// now lets say that you present your product with js as an example

var products = getProductByAjax();
products.forEach(x=> {
// and here is the image 
var img = "<img src=/Home/GetImage?id="+x.Id+" />";
})

答案 4 :(得分:0)

我发现最干净的方法是这样。

在 Django 3.1.5 上测试

class MyForm(forms.Form):
    my_boolean = forms.BooleanField(required=False, initial=True)

I found the answer here

答案 5 :(得分:0)

initialdefault 属性都不适用于我,如果您是这种情况,请尝试以下操作:

class MyForm(forms.ModelForm):
    validated = forms.BooleanField()

    class Meta:
        model = MyModel
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

        self.fields['validated'].widget.attrs['checked'] = True

答案 6 :(得分:0)

检查 BooleanField 中默认状态的另一种方法是:

   active = forms.BooleanField(
    widget=forms.CheckboxInput(
        attrs={
            'checked': True
        }
    )
  )

答案 7 :(得分:-1)

在DJango 3.0中,像下面这样设置model.py中BooleanField的默认值:

class model_name(models.Model):
example_name = models.BooleanField(default=False)