【问题标题】:Django list object in model does not persist in session after server restart服务器重新启动后,模型中的 Django 列表对象不会在会话中持续存在
【发布时间】:2012-12-26 13:28:05
【问题描述】:

好的,我将从我的代码开始:

models.py

class Order(models.Model):
order_id = models.IntegerField(primary_key = True)
order_status = models.IntegerField()
orderItems = []

views.py

def addToList(request):
   prodId = request.GET['prodId'] or None
   if not prodId is None:
      prod = Product.objects.get(prod_id=prodId)
      custOrder = request.session.get(definitions.CUSTOMER_ORDER) or \
                Order(order_total = 0, order_status=1)
    custOrder.addOrderItem(prod)
    request.session[definitions.CUSTOMER_ORDER] = custOrder

return HttpResponseRedirect('/')


def home(request):
    shoppingList = request.session.get(definitions.CUSTOMER_ORDER)

好的,如您所见,我创建了订单模型,然后将 orderItem 添加到该模型中的列表并将其存储在会话中。现在这工作正常,数据按预期持续存在。事情是当我重新启动服务器时,订单模型仍在会话中,这是我想要的,但列表对象是 EMPTY。 orderItems = [] 当我调试它时。

现在我不是 python 大师,所以如果有人能指出我做错了什么,我将不胜感激。

编辑: 为models.py添加orderItem模型

class OrderItem(models.Model):
orderItem_id = models.IntegerField(primary_key = True)
orderItem_cost = models.FloatField()
orderItem_quantity = models.IntegerField()
order = models.ForeignKey(Order)

def getOrderCost(self):
    return self.orderItem_cost * self.orderItem_quantity

class Meta:
    db_table = u'orderItems'

【问题讨论】:

    标签: django list session model persistence


    【解决方案1】:

    您没有在数据库中持久化orderItems,它只是Order 对象中的一个列表属性。您可以重新设计模型,例如在Order 中使用ManyToManyFieldProducts。

    ManyToMany examples

    【讨论】:

    • 如果有一个小例子就好了。不仅仅是一个链接(可能被删除或无法访问)
    • 官方文档的链接
    • @msc:你是说模型要在这样的会话中持续存在,所有属性都需要是数据库字段?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    相关资源
    最近更新 更多