gpt4 book ai didi

Django CheckboxSelectMultiple : my checkboxes are not checked

转载 作者:行者123 更新时间:2023-12-03 10:19:19 26 4
gpt4 key购买 nike

我有一个 ManyToManyField , 显示复选框。当我的 bool 字段 share_data 时应检查复选框等于一。

这是代码:

class Participant(models.Model):
databases = models.ManyToManyField(Advertiser, null=True, blank=True, through='ShareDataToBrands')

@property
def share_to_brands_list(self):
brands=[]
for brand in ShareDataToBrands.objects.all():
brands.append((brand.advertiser.id, brand.advertiser.brand_name, brand.share_data))
return brands


class ShareDataToBrands(models.Model):
participant = models.ForeignKey(Participant, blank=False, null=False)
advertiser = models.ForeignKey(Advertiser, blank=False, null=False)
share_data= models.BooleanField(default=True)

def __str__(self):
return self.participant, self.advertiser, self.share_data


class ShareDataToBrandsForm(forms.ModelForm):

class Meta:
model = models.Participant
fields = ('databases', )

databases=forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple)

def __init__(self, *args, **kwargs):
super(ShareDataToBrandsForm, self).__init__(*args, **kwargs)
share_to_brands=self.instance.share_to_brands_list
self.fields['databases'].choices=self.fields['databases'].choices=[(brand[0], brand[1]) for brand in share_to_brands]
self.initial['databases']=[brand[2] for brand in share_to_brands]
print(self.initial['databases'])
for brand in self.instance.share_to_brands_list:
print brand

输出:
[True, True, True]
(1L, u'my super brand', True)
(2L, u'new brand', True)
(3L, u'just my brand', True)

当前,仅选中第一个复选框,即使所有复选框都应选中,如输出所示。怎么了?

最佳答案

我认为在为 CheckboxSelectMultiple 设置初始值时小部件,您需要传递应该检查的值列表,而不是每个选项的 bool 值列表。这样做initial = [True,True,True]不会让您选中这些框。你想做一些更像 initial = [1,2,3] 的事情.

在您的示例中,您可以将相关行替换为:

self.initial['databases']=[brand[0] for brand in share_to_brands if brand[2]]

关于Django CheckboxSelectMultiple : my checkboxes are not checked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33597775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com