Django DetailView用于两个独立的查询/模型
我有一个用于订单的working Detail视图,希望向其中添加另一个queryset(用于模型输入),以便能够向用户读取更多我没有存储在订单模型中的数据 既然两个模型共享同一个foreignkey Cart,那么攻击它的最佳方式是什么 我想是朝着以下方向的东西:entry\u obj=entry.objects.filter(cart=Order.objects.cart)?但是如何在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]+
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问题。