python - 如何在数据库中获取一个值并在 django 表单上显示
问题描述
我有一个DuesLevy模型,其中包含一个名为user的字段,它恰好是我的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')
视图.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, 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 中的代码会有所帮助。你在那里有一个函数 getcleaned_data() 吗?
推荐阅读
- android - 工作日后在 Flutter Calendar Widget 中添加分隔符
- python - Python OKTA 和 Salesforce
- postgresql - Quarkus sql 客户端 PreparedQuery.executeBatch 受影响的行数始终等于 1
- arrays - 在 PowerShell 中,为什么我的 if 语句返回整个数组而不是单个对象?
- excel - 将数据从 excel 文件复制并粘贴到另一个文件并更改格式
- javascript - 如何使用 jQuery 从动态添加的行中计算表列的总和?
- python - 请让我理解为什么在下面的代码中使用 numpy.isfinite 函数的原因?
- css - MiniCssExtractPlugin - 首次加载时的内联样式?
- azure-devops - Azure DevOps yaml 管道表达式未评估
- vba - 在 Sharepoint 网页版中使用宏的替代方法