首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我是否可以从db检查我的视图状态复选框

我是否可以从db检查我的视图状态复选框
EN

Stack Overflow用户
提问于 2013-07-03 15:04:22
回答 2查看 212关注 0票数 1

我的问题是下一个:我有一个带有一些参数的设备表,其中一个是device_able,如果它是'enable‘,我会用它做一些事情。我添加了两个操作到管理操作,改变device_able的状态为真或假,它是有效的,但当我从表中打开任何设备时,我的复选框总是被选中,即使它是假的。我知道我不会检查数据库中关于复选框状态的数据,但是该怎么做呢?我必须使用模板,但我不知道如何连接我的模板,检查状态的复选框从数据库到我的开发应用程序的管理视图。你能给我一些有用的链接来探索吗?或者我可以在我的admin.py文件中检查状态?

在我的models.py

代码语言:javascript
运行
复制
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中

代码语言:javascript
运行
复制
class DevAdminForm(forms.ModelForm):    
    class Meta:
        widgets = {
            'device_able': forms.CheckboxInput
        }

我的admin.py的完整代码

代码语言:javascript
运行
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-17 18:33:12

我已经找到了解决我的问题的办法。首先,django是如此的酷,可以为你做所有的事情。当我创建我的模型时,我已经将'device_able‘设置为models.CharField。它是在数据库字段中创建的,类型为varchar。在那之后,我已经将我的模型'device_able‘改为models.BooleanField,并直接在'bool’的db类型'device_able‘字段中进行了更改。但我的复选框总是被选中,因为只有空字符串返回False。当我用相同的代码创建新项目时,我的意思是device_able = models.BooleanField,我的复选框开始正常工作了!

票数 0
EN

Stack Overflow用户

发布于 2013-07-03 18:21:29

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

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

我会在你的admin.py中试试:

代码语言:javascript
运行
复制
class DevAdmin(admin.AdminModel): 


    def make_device_able()
    ...

    actions = [make_device_able]

并将类注册为:

代码语言:javascript
运行
复制
admin.site.register(Dev, DevAdmin)

希望能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17441692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档