python-3.x - 在我的表单中使用另一个模型的字段时如何将数据插入我的数据库?
问题描述
我有两种不同的模型:Trainer 和 User。我正在将 Trainer 中的 trainer_price 字段拉入我的 User 表单中。请注意,我也没有使用外键。
我遇到的问题是 trainer_price 没有被插入,默认值 0 在那里,这不是我想要的。
用户表单的工作方式是填写他们的姓名、地址、电子邮件,并且一旦他们选择了培训师,就会自动填充 trainer_price。它也是一个只读字段。
这是我到目前为止所尝试的:
用户意见.py
def buyer(request):
user_form = UserForm()
trainer_listing = Trainer.objects.get(id=15).trainer_price
context = {'user_form':user_form, 'trainer_listing':trainer_listing}
if request.method == "POST":
user_form = UserForm(request.POST)
if user_form.is_valid():
user_form.save()
return redirect("/success_page")
return render(request, "user/user_form.html", context)
表格.py
class UserForm(forms.ModelForm):
Fullname = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'John Doe'}))
Email = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Email'}))
Mobile = forms.CharField(widget=forms.TextInput(attrs={'placeholder': '312-222-2222'}))
Address = forms.CharField(widget=forms.TextInput(attrs={'placeholder': '1234 Main St'}))
City = forms.CharField()
State = forms.ChoiceField(choices=STATES)
zipcode = forms.CharField()
trainer_price = forms.DecimalField(label="Trainer Price", required=False, widget=forms.TextInput(attrs={'readonly':'readonly'}))
class Meta:
model = User
fields = ['Fullname','Email', 'Mobile', 'Address', 'City',
'State', 'zipcode', 'trainer_price']
在正确方向上的任何帮助都会很棒!
解决方案
基本上,我们可以使用initial
参数为表单字段设置默认值。
def buyer(request):
trainer = Trainer.objects.get(id=15)
user_form = UserForm(initial={"trainer_price": trainer.trainer_price})
# etc
PS。确保您没有使用来自request.POST
. 聪明的用户可以使用它来获得非常便宜的交易。相反,始终重新查询实际值。
推荐阅读
- python - Tensorflow:AttributeError:'function'对象没有属性'graph'
- django - 查询集上的 Django 总和
- php - 使用 Phpspreadsheet 从数据库下载 excel 表时出错
- excel - 当特定单元格有数据时,如何锁定大部分行?
- c - C.printf中的问题("%ld%ld%ld\n",lol,&lol,*lol);
- swift - 先自动完成后启动另一个后台进程
- php - 如何使用嵌套为 Elasticsearch 创建关系数据库结构
- android - Android SDK 管理器不显示 Android SDK Platform_tools
- javascript - React Native 使用 auth() 时出错
- swift - 使用 watchOS 5 访问 Apple Watch 应用扩展上的用户默认值