-1

わかりましたので、私のコードが何であるかから始めます:

models.py

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

ビュー.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 を追加してセッションに保存します。これで問題なく動作し、データは期待どおりに保持されます。サーバーを再起動すると、 Order モデルはまだセッション内にありますが、これは私が望むものですが、リストオブジェクトは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'
4

1 に答える 1

2

データベースに永続化するのではなくorderItems、オブジェクトの単なるリスト属性ですOrderManyToManyFieldwith を にProduct持つように、モデルを作り直すことができますOrder

多対多の例

于 2013-01-11T21:55:39.177 に答える