首页 > 解决方案 > Django:无法通过foreign_key访问模板上的数据

问题描述

我想transaction_ambassador在我的模板中访问。因此我的方法是通过订单模型,因为我已经使用它并且它是foreign_key。我所做的是

{{ order.ambassador_transaction }} 

但我得到的只是ambassadors.AmbassadorTransaction.None。我检查了几次,但它是通过foreign_key. 任何人都知道我在这里做错了什么?

在此处输入图像描述

视图.py

class OrderListView(ListView):
    allow_empty = False
    template_name = 'orders/order_list.html'

    def get_queryset(self):
        return Attendee.objects.filter(
            order__order_reference=self.kwargs['order_reference'],
            order__access_key=self.kwargs['access_key'],
        )

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['order'] = Order.objects.get(
            order_reference=self.kwargs['order_reference'],
        )
        return context

模型.py

class AmbassadorTransaction(models.Model):
    order = models.ForeignKey(
        Order,
        on_delete=models.PROTECT,
        related_name='ambassador_transaction'
    )
    ambassador = models.ForeignKey(
        AmbassadorProfile,
        on_delete=models.PROTECT,
        related_name='ambassador_profile'
    )

class Order(models.Model):
    event = models.ForeignKey(
        Event,
        on_delete=models.PROTECT,
        related_name='orders'
    )
    order_reference = models.CharField(
        max_length=10,
        unique=True,
    )
    total_gross = models.DecimalField(
        max_digits=25,
        decimal_places=2
    )
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

标签: django

解决方案


既然你models.ForeignKey(...)在里面AmbassadorTransaction而不是在 里面,Order那么这是一个解决方案:

{% for ambassador in order.ambassador_transaction.all %}
  ...
{% endfor %}

推荐阅读