Python 如何在数据库中获取值并在django窗体上显示

Python 如何在数据库中获取值并在django窗体上显示,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,我有一个DuesLevy模型,其中有一个名为user的字段,它恰好是我的user模型的外键。我想显示从用户模型到我的表单的电子邮件值AddMemberDuesForm() 原因是我想获取电子邮件和金额值,并将其传递给我的支付处理器。 我正在使用基于类的视图处理我的表单,下面是我的代码 forms.py class AddMemberDuesForm(forms.ModelForm): class_of_dues = forms.CharField(required=False, widg

我有一个DuesLevy模型,其中有一个名为user的字段,它恰好是我的user模型的外键。我想显示从用户模型到我的表单的电子邮件值AddMemberDuesForm()

原因是我想获取电子邮件和金额值,并将其传递给我的支付处理器。 我正在使用基于类的视图处理我的表单,下面是我的代码
forms.py

class AddMemberDuesForm(forms.ModelForm):
    class_of_dues = forms.CharField(required=False, widget=forms.Select(choices=options.CLASS_OF_DUES, attrs={'class':'form-control'}))
    payment_circle = forms.CharField(required=False, widget=forms.Select(choices=options.PAYMENT_CIRCLE, attrs={'class':'form-control'}))
    payment_option = forms.CharField(required=False, widget=forms.Select(choices=options.PAYMENT_OPTION, attrs={'class':'form-control'}))
    payment_channel = forms.CharField(required=False, widget=forms.Select(choices=options.PAYMENT_CHANNEL_TYPE, attrs={'class':'form-control'}))
    amount = forms.DecimalField(widget=forms.NumberInput(attrs={'class':'form-control'}))
    payment_date = forms.DateField(widget=forms.DateInput(attrs={'class':'form-control', 'type':'date'}))
    
    description = forms.CharField(widget=forms.Textarea(attrs={'class':'form-control'}))


    class Meta():
        model = DuesLevy
        exclude = ('date_recorded', 'start_date', 'end_date', 'transaction_id')
class AddMemberDues(LoginRequiredMixin, CreateView):
    login_url = '/backoffice/'
    model = DuesLevy
    template_name =  'dashboard/add-edit-member-dues.html'
    form_class = AddMemberDuesForm
    context_object_name = 'member_form'

    def post(self, request, *args, **kwargs):
       form = AddMemberDuesForm(request.POST)
       if form.is_valid():
           form = AddMemberDuesForm()
           form.user.email = form.user.cleaned_data['email']
           self.template_name = 'dashboard/payment.html'
           form.save()
           return render(request,  self.template_name,
            {'email': form.cleaned_data['email'], 'amount': form.cleaned_data['amount']}) 

    def get(self, request, *args, **kwargs):
        initial = {'email':request.user.email}
        form = AddMemberDuesForm(initial=initial)
        return render(request, self.template_name, {'email': form.cleaned_data['email']})
视图.py

class AddMemberDuesForm(forms.ModelForm):
    class_of_dues = forms.CharField(required=False, widget=forms.Select(choices=options.CLASS_OF_DUES, attrs={'class':'form-control'}))
    payment_circle = forms.CharField(required=False, widget=forms.Select(choices=options.PAYMENT_CIRCLE, attrs={'class':'form-control'}))
    payment_option = forms.CharField(required=False, widget=forms.Select(choices=options.PAYMENT_OPTION, attrs={'class':'form-control'}))
    payment_channel = forms.CharField(required=False, widget=forms.Select(choices=options.PAYMENT_CHANNEL_TYPE, attrs={'class':'form-control'}))
    amount = forms.DecimalField(widget=forms.NumberInput(attrs={'class':'form-control'}))
    payment_date = forms.DateField(widget=forms.DateInput(attrs={'class':'form-control', 'type':'date'}))
    
    description = forms.CharField(widget=forms.Textarea(attrs={'class':'form-control'}))


    class Meta():
        model = DuesLevy
        exclude = ('date_recorded', 'start_date', 'end_date', 'transaction_id')
class AddMemberDues(LoginRequiredMixin, CreateView):
    login_url = '/backoffice/'
    model = DuesLevy
    template_name =  'dashboard/add-edit-member-dues.html'
    form_class = AddMemberDuesForm
    context_object_name = 'member_form'

    def post(self, request, *args, **kwargs):
       form = AddMemberDuesForm(request.POST)
       if form.is_valid():
           form = AddMemberDuesForm()
           form.user.email = form.user.cleaned_data['email']
           self.template_name = 'dashboard/payment.html'
           form.save()
           return render(request,  self.template_name,
            {'email': form.cleaned_data['email'], 'amount': form.cleaned_data['amount']}) 

    def get(self, request, *args, **kwargs):
        initial = {'email':request.user.email}
        form = AddMemberDuesForm(initial=initial)
        return render(request, self.template_name, {'email': form.cleaned_data['email']})
我在数据库中得到了这个错误

'AddMemberDuesForm' object has no attribute 'cleaned_data'

Internal Server Error: /backoffice/add-member-dues/                                       
Traceback (most recent call last):                                                        
  File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\core\handlers\exception.py", line 34, in inner                                                             
    response = get_response(request)                                                      
  File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response                                                         
    response = self.process_exception_by_middleware(e, request)                           
  File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response                                                         
    response = wrapped_callback(request, *callback_args, **callback_kwargs)               
  File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\views\generic\base.py", line 71, in view                                                                   
    return self.dispatch(request, *args, **kwargs)                                        
  File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\contrib\auth\mixins.py", line 52, in dispatch                                                              
    return super().dispatch(request, *args, **kwargs)                                     
  File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\views\generic\base.py", line 97, in dispatch                                                               
    return handler(request, *args, **kwargs)                                              
  File "D:\mycda\backend\views.py", line 348, in get                                      
    return render(request, self.template_name, {'email': form.cleaned_data['email']})     
AttributeError: 'AddMemberDuesForm' object has no attribute 'cleaned_data'

查看models.py中的代码会有所帮助。您是否有一个函数get clean_data()?

您在
表单中初始化了另一个表单。if块是否有效。也许你应该给它起个别的名字。@Ejaz完成了,但没有工作。你是不是也遇到了同样的错误?
cleaned\u数据是在
form.is\u valid()
调用之后设置的。您正在尝试访问未进行表单验证的
get()
中的
已清理的\u数据。我已删除此表单=AddMemberDuesForm()表单。是否仍然存在相同的错误