Django DetailView用于两个单独的查询/模型

时间:2018-07-17 09:44:32

标签: django django-models django-views

我有一个适用于我的订单的detailview,并且想向其中添加另一个查询集(用于模型输入),以便能够向用户读取一些我没有存储在订单模型中的数据。

由于两个模型共享同一个外键购物车,因此最好的攻击方法是什么?

我想朝着以下方向发展: entry_obj = Entry.objects.filter(cart = Order.objects.cart)?但是如何将其实现到detailview中?

^re  { return X; }
re$  { return X; }

Models.py

url(r'^(?P<order_id>[0-9A-Za-z]+)/$', views.OrderDetailView.as_view(),
    name="detail"),

class OrderDetailView(LoginRequiredMixin, DetailView):
    def get_object(self):
        qs = Order.objects.by_request(
            self.request
            ).filter(order_id = self.kwargs.get('order_id'))
        if qs.count() == 1:
            return qs.first()
        return Http404

Models.py

class Entry(models.Model):
    product = models.ForeignKey(Product, null=True)
    cart = models.ForeignKey(Cart, null=True)
    fabric = models.ForeignKey(Fabric, null=True)
    quantity = models.PositiveIntegerField()

感谢帮助!

1 个答案:

答案 0 :(得分:2)

为此,您可以覆盖get_context_data

class OrderDetailView(LoginRequiredMixin, DetailView):
    def get_object(self):
        qs = Order.objects.by_request(
            self.request
            ).filter(order_id = self.kwargs.get('order_id'))
        if qs.count() == 1:
            return qs.first()
        return Http404

    def get_context_data(self, **kwargs):
        context = super(OrderDetailView, self).get_context_data(**kwargs)
        context['entry_obj'] = Entry.objects.filter(cart=self.object.cart)
        return context

在模板中,您将能够获得如下条目详细信息:

{{ entry_obj.quantity }}