我有两个模型Order
和OrderItem
.
class OrderItem(SmartModel):
shopping_id = models.CharField(max_length=50,db_index=True)
quantity = models.IntegerField(default=0)
item = models.ForeignKey(Item)
order = models.ForeignKey(Order)
这就是创建和保存OrderItem
对象的方式
if not item_in_orders:
# creat and save a new order item
anon_user = User.objects.get(id=settings.ANONYMOUS_USER_ID)
try:
order= Order.objects.get(pk=order_id)
except:
order = Order.objects.create(created_by=anon_user,modified_by=anon_user)
oi=OrderItem.objects.create(order=order,shopping_id=_shopping_id(request),
quantity=quantity,
item=i,
created_by=anon_user,
modified_by=anon_user)
oi.save()
现在我应该提到OrderItem
上面的对象是在Order
对象之前创建的。
class Order(SmartModel):
email = models.EmailField(max_length=50,help_text="Needed as alternative")
mobile = PhoneNumberField(max_length=20,default='+2507####')
billing_name= models.CharField(max_length=50)
billing_address= models.CharField(max_length=50)
billing_city = models.CharField(max_length=50)
两个模型都是 ModelForms 并且经过很好的验证,除了创建两个模型时,数据库中的两行是为Order
. 我怀疑未填充的第一行是在创建 OrderItem 时由此代码创建的。
order = Order.objects.create(created_by=anon_user,modified_by=anon_user)
oi=OrderItem.objects.create(order=order,shopping_id=_shopping_id(request),
quantity=quantity,
item=i,
created_by=anon_user,
modified_by=anon_user)
oi.save()
第二行是在我保存Order
对象时创建的,很好。
请记住,OrderItem
之前创建Order
的,后者是前者中的外键字段。
我对我的 django 应用程序的要求是在Order
给定客户(在我的情况下)之前创建一个订单项。欢迎任何其他想法。