【问题标题】:Django: how to use the checkbox in the adminDjango:如何在管理员中使用复选框
【发布时间】:2015-11-16 08:25:17
【问题描述】:

我尝试在我的视图中显示复选框的值,但它不起作用..

forms.py

class JoursForm(forms.ModelForm):
    class Meta:
        model = Event

    JOURS = ( 
        (1, 'L'),
        (2, 'M'),
        (3, 'M'),
        (4, 'J'),
        (5, 'V'),
    )
    jours = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                     choices=JOURS, label= u"répéter les :")

    def clean_my_field(self):
        return self.cleaned_data['jours']

admin.py

class EventAdmin(admin.ModelAdmin):
    form = JoursForm
    save_on_top = True
    save_as = True
    list_per_page = 25
    list_display = ('title', 'start', 'end',  'user', 'fin', 'frequency')

    fieldsets = (
        (None, {
            'fields': ('title','start', 'end', 'is_cancelled', 'calendar', 'user', 'description', ('frequency', 'fin' ), 'activated', 'jours',)
        }),
    )

views.py

if request.method == 'POST':
    form = JoursForm(request.POST)
    if form.is_valid():
        jours = form.cleaned_data.get('jours')
        print 'jours', jours

else:
    form = JoursForm

我想使用复选框的值,但是当我在勾选复选框后保存在管理员中时,它们仍处于未选中状态。

怎么办?

【问题讨论】:

    标签: django forms checkbox admin


    【解决方案1】:

    您的 jours 选择不会保存在任何地方 - 没有模型字段可以保存它。 要完成这项工作,您可以为您的 jours 创建一个模型

    class Jour(models.Model):
        abbrev = models.CharField(length="1")
    

    并在其中添加您的工作日。

    然后你添加一个字段到你的事件模型中:

    jours=models.ManyToManyField(Jour)
    

    然后您可以将表单更改为:

    class JoursForm(forms.ModelForm):
        class Meta:
            model = Event
    
        jours = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                     queryset=Jour.objects.all(), label= u"répéter les :")
    

    但是,我不确定这是否是您想要实现的目标。

    【讨论】:

    • 我收到错误:__init__() 至少需要 2 个参数(给定 3 个)
    • 您是在管理员还是视图中收到错误消息?
    • 对不起,我的回答不正确 - 你能发布你的事件模型吗?您的 Jours 选择需要在模型中定义,是吗?
    • django admin 应该在哪里保存 jours 输入?您的模型中没有 jours 字段?
    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 2017-05-03
    • 2013-05-16
    • 2020-03-17
    • 1970-01-01
    相关资源
    最近更新 更多