请求用户电子邮件不能在Forms.py中工作



有很多关于这个的话题,但我不能让它工作。检查多个帖子后,我创建了一个init方法,但我仍然得到在locations = modelform.

中没有定义Email。

视图:

form = GroupCreateForm(request.POST or None, user=request.user)

Forms.py:

class GroupCreateForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(GroupCreateForm, self).__init__(*args, **kwargs)
    def clean_email_address(self):
        email = self.cleaned_data.get('email')
        if self.user and self.user.email == email:
            return email

    locations = forms.ModelMultipleChoiceField(label='',widget=forms.CheckboxSelectMultiple(attrs={'class': 'form-control'}), queryset=LocationData.objects.filter(email=email))        
    groupname = forms.CharField(label='', required=True ,widget=forms.TextInput(attrs={'rows': '1', 'class': 'form-control', 'placeholder': 'Geben Sie den Gruppen Namen an'}))

    class Meta: 
        model = GroupManagement
        fields = ['groupname', 'locations']

是这样解决的:

Forms.py:

class GroupCreateForm(forms.ModelForm):
    locations = forms.ModelMultipleChoiceField(label='',widget=forms.CheckboxSelectMultiple(attrs={'class': 'form-control'}), queryset=None)        
    groupname = forms.CharField(label='', required=True ,widget=forms.TextInput(attrs={'rows': '1', 'class': 'form-control', 'placeholder': 'Geben Sie den Gruppen Namen an'}))
    def __init__(self, user, *args, **kwargs):
        super(GroupCreateForm, self).__init__(*args, **kwargs)
        self.fields['locations'].queryset = LocationData.objects.all().filter(email=user.email)
    class Meta: 
        model = GroupManagement
        fields = ['groupname', 'locations']

Views.py:

form = GroupCreateForm(data=request.POST, user=request.user)

if request.method == 'POST':
    if form.is_valid():
        mulitple_choice = form.cleaned_data['locations']
        print(mulitple_choice)

最新更新