Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django DetailView用于两个独立的查询/模型_Django_Django Models_Django Views - Fatal编程技术网

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

Django DetailView用于两个独立的查询/模型,django,django-models,django-views,Django,Django Models,Django Views,我有一个用于订单的working Detail视图,希望向其中添加另一个queryset(用于模型输入),以便能够向用户读取更多我没有存储在订单模型中的数据 既然两个模型共享同一个foreignkey Cart,那么攻击它的最佳方式是什么 我想是朝着以下方向的东西:entry\u obj=entry.objects.filter(cart=Order.objects.cart)?但是如何在detailview中实现它呢 url(r'^(?P<order_id>[0-9A-Za-z]+

我有一个用于订单的working Detail视图,希望向其中添加另一个queryset(用于模型输入),以便能够向用户读取更多我没有存储在订单模型中的数据

既然两个模型共享同一个foreignkey Cart,那么攻击它的最佳方式是什么

我想是朝着以下方向的东西:entry\u obj=entry.objects.filter(cart=Order.objects.cart)?但是如何在detailview中实现它呢

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()
class Order(models.Model):
    billing_profile = models.ForeignKey(BillingProfile, null=True, blank=True)
    order_id        = models.CharField(max_length=120, blank=True)
    shipping_address= models.ForeignKey(Address, related_name="shipping_address",
                                        null=True, blank=True)
    cart            = models.ForeignKey(Cart)
    total           = models.DecimalField(default=0.00, decimal_places=2,
                        max_digits=100)
    active          = models.BooleanField(default=True)
谢谢你的帮助

您可以对此进行覆盖:

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 }}
您可以对此进行覆盖:

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 }}

序列化程序在哪里?创建订单时,我正在使用pre_save方法创建订单id。我认为没有必要提及我的detailview问题。你的序列化程序在哪里?创建订单时,我正在使用pre_save方法创建订单id。我认为没有必要提及我的detailview问题。