Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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 在ModelForm字段中使用self_Django_Django Forms - Fatal编程技术网

Django 在ModelForm字段中使用self

Django 在ModelForm字段中使用self,django,django-forms,Django,Django Forms,我有一个Formview并将pk传递给ModelForm。在ModelForm中,我无法在为字段定义的查询集中使用self.pk: 视图.py class DetailProductForm(forms.ModelForm): def __init__(self, *args, **kwargs): # get the pk from the FormView at set it as self.pk self.pk = kwargs.pop('pk'

我有一个Formview并将pk传递给ModelForm。在ModelForm中,我无法在为字段定义的查询集中使用self.pk:

视图.py

class DetailProductForm(forms.ModelForm):


    def __init__(self, *args, **kwargs):
        # get the pk from the FormView at set it as self.pk
        self.pk = kwargs.pop('pk', None)
        super(DetailProductForm, self).__init__(*args, **kwargs)

    # use self.pk in my queryset (there are more fields who use self.pk, this is just one as an example)
    field = forms.ModelChoiceField(queryset=Configuration.objects.filter(product__pk=self.pk), widget=forms.RadioSelect)


    class Meta:
        model = Configuration
        fields = ['field']
[……]

forms.py

class DetailProductForm(forms.ModelForm):


    def __init__(self, *args, **kwargs):
        # get the pk from the FormView at set it as self.pk
        self.pk = kwargs.pop('pk', None)
        super(DetailProductForm, self).__init__(*args, **kwargs)

    # use self.pk in my queryset (there are more fields who use self.pk, this is just one as an example)
    field = forms.ModelChoiceField(queryset=Configuration.objects.filter(product__pk=self.pk), widget=forms.RadioSelect)


    class Meta:
        model = Configuration
        fields = ['field']
NameError:未定义名称“self”


如何将self.pk用于字段?

找到了解决方案。实际上,我甚至不再需要模型了

class DetailProductForm(forms.Form):

    field = forms.ModelChoiceField(queryset=None, widget=forms.RadioSelect)

    def __init__(self, *args, **kwargs):
        self.pk = kwargs.pop('pk', None)
        super().__init__(*args, **kwargs)
        self.fields['field'].queryset = Configuration.objects.filter(product__pk=self.pk))