查询不返回kwargs结果django

时间:2017-03-12 21:48:36

标签: django

kwargs传入我的查询,但值没有显示在我的下拉框中,下拉框中没有显示任何值。

forms.py

class ChooseCarMakeModelForm(forms.Form):

        car_model = forms.ModelChoiceField(queryset=CarModel.objects.none())
        def __init__(self, *args, **kwargs):
            ids = kwargs.pop('ids', None)
            super(ChooseCarMakeModelForm, self).__init__(*args, **kwargs)

            if ids:
             print 'it worked'
                self.fields['car_model'].queryset = CarModel.objects.filter(make=ids)
            else:
                print 'didnt work'

视图

form = ChooseCarMakeModelForm(request.POST,ids=car_model_ids)

模型

class CarMake(models.Model):

    name = models.CharField(max_length=200)
    description = models.TextField(null=True, blank=True)

    def __str__(self):         
        return self.name

class CarModel(models.Model):

    name = models.CharField(max_length=200)
    description = models.TextField(null=True, blank=True)
    price = models.IntegerField()
    make = models.ForeignKey('CarMake')

    def __str__(self):         
        return self.name

1 个答案:

答案 0 :(得分:1)

问题在于您的查询集。假设ID为Foo个对象的列表,(Func<IMyContext>,而不是ID列表:MyContext),您的过滤器将返回零结果,因为没有CarMake有{[<SomeMake>, <SomeOtherMake>] 1}}这是[1, 3, 4]的列表。您想要做的是过滤所有CarModel 列表中的 Django makes pretty simple

make

另一方面,如果CarMake实际上是来自CarModel的{​​{1}}列表(例如self.fields['car_model'].queryset = CarModel.objects.filter(make__in=ids) ),那么您只需做一个小改动:

ids