【发布时间】:2021-10-26 01:55:02
【问题描述】:
我是 Django 新手,在这里需要一些帮助,我想创建一个页面,卖家可以在其中销售带有优惠券代码的商品,而客户可以获得这些优惠券。和JS稍微混合一下,我把优惠券藏起来了,你必须“购买”该物品,这样你才能拥有它。我有 3 张桌子,“Produto”(产品)、“Pedido”(订单)和“Cliente”(客户),当客户尝试“购买”该商品时,它只会显示他/她的名字!有人可以帮我吗?
我的观点.py
@login_required(login_url='login')
def liberarForm(request, pk):
produto = Produto.objects.get(id=pk) #The Product IDs are working in admin panel
cliente = Cliente.objects.get(user=request.user)
if request.method == 'POST':
form_produto = LiberaProduto(request.POST)
form_cliente = LiberaPedido(request.POST)
if form_cliente.is_valid() and form_produto.is_valid():
form_cliente.save()
form_produto.save()
return redirect('/')
else:
form_produto = LiberaProduto(initial={'produto': produto}) #not working
form_cliente = LiberaPedido(initial={'cliente': cliente})
context = {'form_cliente': form_cliente, 'form_produto': form_produto}
return render(request, "liberar.html", context)
我的表单.py
class LiberaPedido(ModelForm):
class Meta:
model = Pedido
fields = '__all__'
exclude = ['produto', 'status', 'data_criado']
class LiberaProduto(ModelForm):
class Meta:
model = Produto
fields = ['nome', 'lojista', 'status', 'estoque']
我的models.py
class Cliente(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
chapa = models.DecimalField(null=True, max_digits=20, decimal_places=0)
cpf = models.DecimalField(null=True, max_digits=20, decimal_places=0)
telefone = models.CharField(max_length=15, null=True)
email = models.CharField(max_length=200, null=True)
data_criado = models.DateTimeField(auto_now_add=True)
class Produto(models.Model):
STATUS = (
('Novo', 'Novo'),
('Expirado', 'Expirado'),
('Usado', 'Usado'),
)
lojista = models.CharField(max_length=200, null=True)
nome = models.CharField(max_length=200, null=True)
preco = models.DecimalField(null=True, max_digits=100, decimal_places=2)
cupom = models.CharField(max_length=200, null=True)
status = models.CharField(max_length=200, null=True, choices=STATUS)
desconto = models.FloatField(null=True)
estoque = models.BooleanField(verbose_name="Em estoque", default='Novo', null=True)
categorias = models.ManyToManyField(Categoria)
class Pedido(models.Model):
STATUS = (
('No estoque', 'No estoque'),
('Em rota', 'Em rota'),
('Entregue', 'Entregue'),
)
cliente = models.ForeignKey(Cliente, null=True, on_delete=models.SET_NULL)
produto = models.ForeignKey(Produto, null=True, on_delete=models.SET_NULL)
data_criado = models.DateTimeField(auto_now_add=True)
status = models.CharField(max_length=200, null=True, choices=STATUS, default='No Estoque')
我的 HTML
<form action="" method="POST">
{% csrf_token %}
{{form_cliente.as_p}}
{{form_produto.as_p}}
<input type="submit" value="Liberar">
【问题讨论】:
-
Produto模型中没有字段名称为produto,如果您希望自动填充特定值,请在表单 init 中传递这些值。
标签: javascript python html django