【问题标题】:if statement and for loop problem in django htmldjango html中的if语句和for循环问题
【发布时间】:2020-07-07 11:07:45
【问题描述】:

我正在尝试打印与特定客户相关的所有订单。我使用 for 循环访问我在 html 文件中的订单,并使用 if 语句确保订单与客户相关。

{% for order in orders %}
    {% if customer.name == order %}
        <a href="">{{ order }}</a>
    {% endif %}
{% endfor %}

在我看来,我允许我的 html 文件访问这些变量。

def orderss(request, pk):
    Customer = customer.objects.get(id=pk)
    orders = Order.objects.all()
    context = {
        'customer':Customer,
        'orders': orders,
    }
    return render(request, 'Inventory_Management/orders.html', context)

为了到达这个页面,我使用了一个按钮

<a href="{% url 'orderss' customer.id %}">View Orders</a>

网址是下面的那个

path('orders/<str:pk>/', orderss, name="orderss")

相关模型

class Order(models.Model):
   STATUS = (
           ('Pending', 'Pending'),
           ('Out for delivery', 'Out for delivery'),
           ('Delivered', 'Delivered'),
           )
    order_head = models.ForeignKey(order_header, blank=False, null=True, on_delete=models.SET_NULL)
    items = models.ForeignKey(item, blank=False, null=True, on_delete=models.SET_NULL)
    Quantity = models.CharField(max_length=100)
    date_created = models.DateTimeField(auto_now_add=True, null=True)
    total = models.CharField(max_length=100)
    status = models.CharField(max_length=200, null=True, choices=STATUS)

def __str__(self):
    return '{self.order_head.Buyer}'.format(self=self)


class customer(models.Model):
    name = models.CharField(max_length=12, blank=False)
    phone = models.CharField(max_length=12, blank=False)
    email = models.CharField(max_length=50, blank=False)
    date_created = models.DateTimeField(auto_now_add=True, null=True)

def __str__(self):
    return self.name

class order_header(models.Model):
    date_created = models.DateTimeField(auto_now_add=True, null=True)
    User = models.CharField(max_length=100, blank=False, default="Seller")
    Type = models.CharField(max_length=100, default="cash")
    Buyer = models.ForeignKey(customer, blank=True, null=True, on_delete=models.SET_NULL)
    Note = models.CharField(max_length=100, blank=True, default="Discount: ")
    Order_Id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

def __str__(self):
    return 'Order Customer: {self.Buyer},  Order Id: {self.Order_Id}'.format(self=self)

现在的问题是当我按下按钮时没有订单出现,我得到的只是一个空白页面,即使特定客户有很多订单。帮助表示赞赏!请帮忙!

【问题讨论】:

    标签: python django for-loop if-statement django-models


    【解决方案1】:

    在模板中,您尝试将作为字符串的 name 字段与对象 (Order) 进行比较。我猜你认为name 将使用__str__ 方法与order 字符串表示进行比较。

    试试这个:

    views.py

    Customer = customer.objects.get(id=pk)
    orders = order_header.objects.filter(Buyer=Customer)
    context = {'orders': orders}
    

    模板

    {% for order_head in orders %}
       {% for order in order_head.order_set.all %}
           <a href="">{{ order }}</a>
       {% endfor %}
    {% endfor %}
    

    【讨论】:

    • 感谢您的回答,没有成功。但我尝试了一种不同的方法,它奏效了。如果你有兴趣我可以分享。谢谢你。如果你能帮忙,我还有一个问题。我试图在我的管理页面中同时使用“save_as”和“保存并添加另一个”,但是当我添加 save_as 时,它会覆盖保存并添加另一个,但我想要两者。
    猜你喜欢
    • 1970-01-01
    • 2017-07-19
    • 2021-02-02
    • 2020-03-24
    • 2014-05-06
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多