如何解决如何在数据库中获取值并在Django表单上显示
我有一个 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')
views.py
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,**kwargs):
initial = {'email':request.user.email}
form = AddMemberDuesForm(initial=initial)
return render(request,{'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,**kwargs)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\contrib\auth\mixins.py",line 52,in dispatch
return super().dispatch(request,**kwargs)
File "C:\Users\Benedict\Miniconda3\envs\mycda\lib\site-packages\django\views\generic\base.py",line 97,in dispatch
return handler(request,**kwargs)
File "D:\mycda\backend\views.py",line 348,in get
return render(request,{'email': form.cleaned_data['email']})
AttributeError: 'AddMemberDuesForm' object has no attribute 'cleaned_data'
解决方法
看看models.py中的代码会有所帮助。你有一个函数在那里获取cleaned_data()吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。