我有“创建订单”,这是需要电子邮件和用户名购买。我想推到这个表单请求用户名和用户电子邮件(如果用户被授权)
forms.py
class OrderCreateForm(forms.ModelForm):
username = forms.CharField(label='Имя пользователя', widget=forms.TextInput(attrs={'class': 'form-control'}))
email = forms.EmailField(label='E-mail', widget=forms.EmailInput(attrs={'class': 'form-control'}))
vk_or_telegram = forms.CharField(label='Введите ссылку на vk или telegram для связи с админом',
widget=forms.TextInput(attrs={'class': 'form-control'}))
captcha = ReCaptchaField()
class Meta:
model = Order
fields = ('username', 'email', 'vk_or_telegram')
views.py
def order_create(request):
cart = Cart(request)
if request.method == 'POST':
form = OrderCreateForm(request.POST)
if form.is_valid():
order = form.save()
for item in cart:
OrderItem.objects.create(order=order, product=item['post'], price=item['price'])
cart.clear()
return render(request, 'store/orders/created.html', {'order': order})
else:
form = OrderCreateForm()
return render(request, 'store/orders/create.html', {'cart': cart, 'form': form})
1条答案
按热度按时间7gcisfzg1#
您可以为表单给予初始参数,这些参数将被预填充到表单中。
首先,检查用户是否经过身份验证,如果是,则使用
initial
参数将初始值推送到表单。但是,请扪心自问,这是否是解决问题的最佳方法。任何用户仍然可以将
username
和email
字段更改为其他内容。如果不希望用户能够操作这些字段,则可以对每个订单的用户表使用外键。