Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ManytoMany小部件到复选框SelectMultiple和链式查询集_Django_Django Models_Django Forms_Django Queryset_Manytomanyfield - Fatal编程技术网

Django ManytoMany小部件到复选框SelectMultiple和链式查询集

Django ManytoMany小部件到复选框SelectMultiple和链式查询集,django,django-models,django-forms,django-queryset,manytomanyfield,Django,Django Models,Django Forms,Django Queryset,Manytomanyfield,碰巧我需要一个ManytoMany字段显示为复选框SelectMultiple,这没有问题。诀窍在于有默认字段要显示,用户应该能够添加新选项,并且该选项应该显示在表单上 以下是我所做的: models.py class Feature(models.Model): name = models.CharField( _("Feature Name"), max_length=40) default = models.BooleanField(_("Is Global Feature")

碰巧我需要一个ManytoMany字段显示为复选框SelectMultiple,这没有问题。诀窍在于有默认字段要显示,用户应该能够添加新选项,并且该选项应该显示在表单上

以下是我所做的:

models.py

class Feature(models.Model):
   name = models.CharField( _("Feature Name"), max_length=40)
   default = models.BooleanField(_("Is Global Feature"), default = False)

class SomeModel(models.Model):
   features = models.ManyToManyField(Feature, related_name='features')
forms.py

class FeatureForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
    somemodel = kwargs['somemodel']
    kwargs.pop('somemodel')
    super(SpaFeatureForm, self).__init__(*args, **kwargs)
    default_features = Feature.objects.filter(default=True)
    custom_features = somemodel.features.filter(default=False)
    q_set = QuerySetChain(default_features, custom_features)
    self.fields['features'].widget = forms.CheckboxSelectMultiple()
    self.fields['features'].queryset = q_set

class Meta:
    model = m.Spa
    fields = ('features',)
我仍将实现第二部分,这将是一个功能表单和某种js来填充复选框Multiselect字段选项


我修改了@akaihola如何链接查询集,将def_all更改为def all。而且效果很好

现在的问题是:这是最好的解决方案吗