Django 我可以从db中检查checkbox的查看状态吗

Django 我可以从db中检查checkbox的查看状态吗,django,Django,我的问题是下一个:我有一些参数的设备表,其中一个是设备可启用的,如果它是“启用”,我会用它做一些事情。我在管理操作中添加了两个操作,它们可以更改设备的状态,设置为True或False,并且可以正常工作,但当我从表中打开任何设备时,我的复选框始终处于选中状态,即使设置为False。我知道我不会检查db中关于复选框状态的数据,但如何检查呢?我必须使用模板,但我不明白如何将检查复选框状态的模板从db连接到开发应用程序的管理视图。你能给我一些有用的链接吗?或者我可以检查admin.py文件中的状态 在m

我的问题是下一个:我有一些参数的设备表,其中一个是设备可启用的,如果它是“启用”,我会用它做一些事情。我在管理操作中添加了两个操作,它们可以更改设备的状态,设置为True或False,并且可以正常工作,但当我从表中打开任何设备时,我的复选框始终处于选中状态,即使设置为False。我知道我不会检查db中关于复选框状态的数据,但如何检查呢?我必须使用模板,但我不明白如何将检查复选框状态的模板从db连接到开发应用程序的管理视图。你能给我一些有用的链接吗?或者我可以检查admin.py文件中的状态

在my models.py中

class Dev(models.Model):
    #some params for device
    device_able = models.BooleanField(default=False, choices=((True, 'enable'), (False, 'disable')))
    def __unicode__(self):
        return self.device_model
在admin.py中

class DevAdminForm(forms.ModelForm):    
    class Meta:
        widgets = {
            'device_able': forms.CheckboxInput
        }
我的admin.py的完整代码

from django.contrib import admin
from dev.models import Dev
from django import forms

def make_enable(self, request, queryset):
    queryset.update(device_able=True)
make_enable.short_description = "Mark selected devices as enable"   
def make_disable(self, request, queryset):
    queryset.update(device_able=False)
make_disable.short_description = "Mark selected devices as disable"

class DevAdminForm(forms.ModelForm):

    class Meta:
        widgets = {
            'device_able': forms.CheckboxInput
        }


class DevAdmin(admin.ModelAdmin): 
    fields = ['device_model', 'resolution', 'assets_format', 'scale_factor', 'device_able']
    list_display = ('device_model', 'resolution', 'assets_format', 'scale_factor', 'device_able')
    search_fields = ['device_model']
    actions = [make_enable, make_disable]
    form = DevAdminForm

class DevInline(admin.SimpleListFilter):
    model = Dev

admin.site.register(Dev, DevAdmin)

如果您在admin视图上,则应该使用admin模块中的AdminModel类将您的模型绑定到表单。如果使用模型表单,则必须提供它绑定到的模型

也就是说,在您的cse中,为您的模型创建AdminModle子类的唯一需要是插入tha管理操作,默认情况下,BooleanField由CheckboxInput表示

我会试试你的admin.py:

class DevAdmin(admin.AdminModel): 


    def make_device_able()
    ...

    actions = [make_device_able]
并向以下人员注册课程:

admin.site.register(Dev, DevAdmin)

希望有帮助。

如果您在“管理”视图中,则应使用“管理”模块中的AdminModel类将您的模型绑定到表单。如果使用模型表单,则必须提供它绑定到的模型

也就是说,在您的cse中,为您的模型创建AdminModle子类的唯一需要是插入tha管理操作,默认情况下,BooleanField由CheckboxInput表示

我会试试你的admin.py:

class DevAdmin(admin.AdminModel): 


    def make_device_able()
    ...

    actions = [make_device_able]
并向以下人员注册课程:

admin.site.register(Dev, DevAdmin)

希望有帮助。

我找到了解决问题的办法。首先,django是如此的酷,为你做所有的工作。创建模型时,我已将“device_-able”设置为models.CharField。它是在类型为varchar的db字段中创建的。在那之后,我将我的模型“device_-able”更改为models.boolean字段,并直接在“bool”上的db type“device_-able”字段中更改。但我的复选框始终处于选中状态,因为只有空字符串返回False。当我用相同的代码创建新项目时,我的意思是device_able=models.BooleanField,我的复选框开始正常工作

我找到了解决问题的办法。首先,django是如此的酷,为你做所有的工作。创建模型时,我已将“device_-able”设置为models.CharField。它是在类型为varchar的db字段中创建的。在那之后,我将我的模型“device_-able”更改为models.boolean字段,并直接在“bool”上的db type“device_-able”字段中更改。但我的复选框始终处于选中状态,因为只有空字符串返回False。当我用相同的代码创建新项目时,我的意思是device_able=models.BooleanField,我的复选框开始正常工作

steppo,谢谢你的回答,我已经这么做了,我的问题是当我进入任何保存参数的设备时,最后一个是“设备可启用”复选框,即使“设备可启用”=False,它也总是被选中。在我的逻辑中,我希望如果“device_-able”为False,复选框为uncheckedI use sqlite db,“device_-able”数据类型为Boolean(0),但我不认为这是为什么设备表中的复选框总是选中的问题。我完全相信复选框不会从db中删除任何内容,因为当我在表中创建新设备时,默认情况下会使用以下代码取消选中该复选框:device_-able=models.BooleanField(默认值=False,选项=((True,'enable'),(False,'disable'))数据类型转换中存在问题。在数据库中,我有一个字符串类型的列,而我应该有一个布尔类型的列。steppo,谢谢你的回答,我已经这样做了,我的问题是当我进入任何保存其参数的设备时,最后一个是“device_-able”复选框,即使“device_-able”=False,它也总是被选中。在我的逻辑中,我希望如果“device_-able”为False,复选框为uncheckedI use sqlite db,“device_-able”数据类型为Boolean(0),但我不认为这是为什么设备表中的复选框总是选中的问题。我完全相信复选框不会从db中删除任何内容,因为当我在表中创建新设备时,默认情况下会使用以下代码取消选中该复选框:device_-able=models.BooleanField(默认值=False,选项=((True,'enable'),(False,'disable'))数据类型转换中存在问题。在数据库中,我有一个字符串类型的列,而我应该有一个布尔类型的列。