2

例如,我有这样的事情:

class Order(models.Model):
    user= models.ForeignKey(User)

class OrderLines(models.Model):
    product = models.ForeignKey(Product)
    quanity = models.PositiveSmallIntegerField()
    order = models.ForeignKey(Order)

现在在我的页面上想做类似的事情(也许我的设计方法是错误的):

  1. 我收到带有 product_id 和 quantity 的 POST 数据,并将其作为简单的字典存储在会话中作为“ORDER_LINES”变量
  2. 当用户单击“下订单”时,我想Order简单地创建对象:

(我正在使用通用视图)

class ShowOrderPreview(TemplateView):
    template_name = "shop/order_preview.html"
    http_method_names = ['get']

    def get_context_data(self, **kwargs):
        context = super(ShowOrderPreview, self).get_context_data(**kwargs)
        order = Order(user = self.request.user)
        for product, quanity in self.request.session.get('ORDER_LINES', {}):
            order.orderlines_set.add( product=get_object_or_404(Product, pk=product_id), quanity=quanity)
        context['tmp_order'] = order
        return context

我不想将该订单存储在数据库中,只有在用户确认后再次创建并保存。

我正在接收:"Column 'order_id' cannot be null"在线order.orderlines_set.add(...

我知道最快的解决方案将是创建类似于sam 之类DummyOrderDummyOrderLines结构,例如我的 mainOrderOrderLinesobject

我正在使用Django 1.4.1.

4

0 回答 0