django - 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)
解决方案
既然你models.ForeignKey(...)
在里面AmbassadorTransaction
而不是在 里面,Order
那么这是一个解决方案:
{% for ambassador in order.ambassador_transaction.all %}
...
{% endfor %}