【发布时间】:2021-10-29 20:29:08
【问题描述】:
我在使用 Django 查询集时遇到问题。首先,我要做的是从客户那里收到他/她使用的折扣券(简称dc),然后与系统中已有的折扣券进行比较。我确实设法用 1 做到了
我的看法:
@login_required(login_url='login')
def cupons(request):
produtos = Produto.objects.all()
cliente = Cliente.objects.get(user=request.user)
pedido = Pedido.objects.all().get(cliente=cliente)
return render(request, 'cupons.html', {'lista': produtos, 'venda': pedido.produto.cupom})
P.S: 有 2 个 Usado (Used) 因为他们有相同的“dc”
当用户使用 2 个或更多“dc”时问题开始,它表示 get() 收到了超过 1 个结果,经过一些研究我发现我需要使用过滤器,但有人可以解释我如何实现使用过滤器的结果相同?
我的课程是 Cliente(客户)、Produto(产品)和 Pedido(订单)。
我的模型:
class Cliente(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
...
class Produto(models.Model):
STATUS = (
('Novo', 'Novo'),
('Expirado', 'Expirado'),
('Usado', 'Usado'),
)
...
...
cupom = models.CharField(max_length=200, null=True)
...
class Pedido(models.Model):
cliente = models.ForeignKey(Cliente, null=True, on_delete=models.SET_NULL)
produto = models.ForeignKey(Produto, null=True, on_delete=models.SET_NULL)
...
只是确定我的 html:
{% for i in lista %}
<tr>
<td ><img src="{{i.lojista.imagem}}" class="logo_lojista"> </td>
<td> {{i.nome}}</td>
<td><a class="btn btn-outline-danger btn-sm btn-block td_cupom" href="{% url 'liberar_form' i.id %}" >Liberar Cupom</a></td>
{%if venda != i.cupom %}
<td class="td_status"> {{i.status}}</td>
{%else%}
<td class="td_status">Usado</td>
{%endif%}
<td class="td_desconto"> {{i.desconto}}</td>
<td class="td_estoque"> {{i.estoque}}</td>
</tr>
{% endfor %}
使用下面的代码,我得到了一个带有我的订单号列表的查询集的结果,现在我想从产品 (FK) 中提取 cupom(优惠券)字段。有人可以帮我吗?
@login_required(login_url='login')
def cupons(request):
produtos = Produto.objects.all()
cliente = Cliente.objects.get(user=request.user)
pedido = Pedido.objects.all().filter(cliente=cliente)
return render(request, 'cupons.html', {'lista': produtos, 'venda': pedido})
过滤器的结果:
【问题讨论】:
标签: python django postgresql