标签: multiplechoicefield

django ModelMultipleChoiceField设置初始值

我有以下代码:

category = forms.ModelMultipleChoiceField(
    label="Category",
    queryset=Category.objects.order_by('name'),
    widget=forms.Select(
        attrs={
            'placeholder': 'Product Category', 'class': 'form-control'}),
    required=True
)
Run Code Online (Sandbox Code Playgroud)

如何在选择框中设置初始值,如"选择一个类别",以便选择框应该有一个类别列表,其初始值为"选择一个类别"

django django-forms multiplechoicefield

17
推荐指数
3
解决办法
1万
查看次数

CMake多选项设置

我正在开发一个用CMake构建的项目,所以我正在CMakeLists.txt为它编写一个.在这个文件中,我想要一个(缓存的)CMake变量,它只能采用几个选项之一(我会以某种方式指定),而不是任意字符串.为简单起见,让我们把它变成一个可以采用"红色","绿色"或"蓝色"的字符串 - 但没有别的.

我可以使用最近的CMake版本来实现这一点,除了设置任意字符串然后检查其有效性吗?

build cmake multiple-choice multiplechoicefield

7
推荐指数
1
解决办法
2230
查看次数

使用MultipleChoiceFilter时动态重新加载选择

我正在尝试构建一个MultipleChoiceFilter选项,其中的选择是相关模型(DatedResource)上可能存在的日期的集合。

到目前为止,这是我正在使用的东西...

resource_date = filters.MultipleChoiceFilter(
    field_name='dated_resource__date',
    choices=[
        (d, d.strftime('%Y-%m-%d')) for d in
        sorted(resource_models.DatedResource.objects.all().values_list('date', flat=True).distinct())
    ],
    label="Resource Date"
)
Run Code Online (Sandbox Code Playgroud)

当它显示在html视图中时...

在此处输入图片说明

最初,这很好用,但是,如果我创建DatedResource具有新的不同date值的新对象,则需要重新启动我的Web服务器,以使它们成为此过滤器中的有效选择。我相信这是因为该choices列表是在Web服务器启动时进行一次评估的,而不是在每次我的页面加载时进行评估的。

有什么办法可以解决这个问题?也许通过一些创造性的使用ModelMultipleChoiceFilter

谢谢!

编辑: 我尝试了一些简单的ModelMultipleChoice用法,但遇到了一些问题。

resource_date = filters.ModelMultipleChoiceFilter(
    field_name='dated_resource__date',
    queryset=resource_models.DatedResource.objects.all().values_list('date', flat=True).order_by('date').distinct(),
    label="Resource Date"
)
Run Code Online (Sandbox Code Playgroud)

HTML表单显示得很好,但是选择不是过滤器可接受的值。我"2019-04-03" is not a valid value.假设收到验证错误,因为此过滤器需要datetime.date对象。我考虑过使用coerce参数,但是ModelMultipleChoice过滤器不接受这些参数。

根据狄克格罗滕的评论,我尝试使用链接问题中的建议。最终像

resource_date = filters.ModelMultipleChoiceFilter(
    field_name='dated_resource__date',
    to_field_name='date',
    queryset=resource_models.DatedResource.objects.all(),
    label="Resource Date"
)
Run Code Online (Sandbox Code Playgroud)

这也不是我想要的,因为HTML现在的形式是:a)显示str每个的表示形式DatedResource,而不是DatedResource.date字段; …

django django-filters multiplechoicefield modelmultiplechoicefield

6
推荐指数
1
解决办法
263
查看次数

根据视图中的条件更改表单中的必填字段(Django)

我有一个带有两个多重选择字段的表单 LabelingForm() ,我希望设置必需的 - 参数,以便在按下按钮 A 和 B 时它为 False,但在按下按钮 C 时为 True。我尝试过初始 = False 和 required = True但它不起作用,按下按钮 A 时需要进行字段选择。

在 forms.py 中

class LabelingForm(forms.Form):



    First_choices = (('1',''),

             .....
            )

    First_choice = forms.MultipleChoiceField(choices=First_choices, initial=True,required=True)


    Second__choices = (('1',''),

      .....
            )

   Second_choice = forms.MultipleChoiceField(choices=Second_choices, initial=True,required=True)
Run Code Online (Sandbox Code Playgroud)

在views.py中

def function(request, postID):
       if request.method == 'POST':
          form = LabelingForm(request.POST)
          if form.is_valid():

        if "A" in request.POST:
             # required is false 

        if "B" in request.POST:
             # required is false 

        if "C" in request.POST:
             # required is …
Run Code Online (Sandbox Code Playgroud)

python forms django required multiplechoicefield

4
推荐指数
1
解决办法
7620
查看次数

Django:带有整数列表的表单

我有一个调用我的django应用程序的javascript应用程序(角度).它使用整数列表来过滤响应.在Django中,我使用表单来清理数据.

使用Javascript:

app.factory('SearchData', 
      function(){
            return {
                shop:[],
                sort:'',
                xhr:'',
                brand:[],
             };
       });
app.factory('SearchQuery',
        ['$http', '$location', '$route', 'SearchData', 
        function($http, $location, $route, SearchData){
            return {
                getItems: function(){
                    return $http.get('/search/',{
                        params: SearchData,
                        responseType: 'json',
                    });
                }
            };
        }
    ]);
Run Code Online (Sandbox Code Playgroud)

Python形式:

class SearchForm(forms.Form):
    shop = forms.IntegerField(widget=forms.SelectMultiple(),required=False)
    sort = forms.CharField(max_length=1, min_length=1, required=False)
    brand = forms.IntegerField(widget=forms.SelectMultiple(),required=False)
Run Code Online (Sandbox Code Playgroud)

我得到了商店和品牌的整数列表,但我不知道如何在django方面处理它.我不想使用MultipleChoiceField,因为我需要在表单中提供选择(这会创建一个不必要的查询).我想做的就是有一个整数列表.

上面的表单抛出"输入整数.".我可以放弃表单并使用request.GET.getlist('shop')(有效).但如果可能的话,我宁愿使用表格......

更新,现在我正在使用MultipleChoiceField并在视图中验证之前传递选项.喜欢:

shops = request.GET.getlist('shop', None)
sf = SearchForm(request.GET)
sf.fields['shop'].choices = shops
Run Code Online (Sandbox Code Playgroud)

它有效,但它不漂亮.

javascript forms django list multiplechoicefield

3
推荐指数
1
解决办法
1681
查看次数

django CheckboxSelectMultiple:我的复选框未被选中

我有一个ManyToManyField,带有复选框显示.当我的布尔字段share_data等于1 时,应检查复选框.

这是代码:

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']) …
Run Code Online (Sandbox Code Playgroud)

django checkbox multiplechoicefield

3
推荐指数
1
解决办法
1306
查看次数