0

我有一个模型Order

class Order(SmartModel):
    date = models.DateTimeField(...)
    status = models.IntegerField(...)
    restaurant = models.ForeignKey(Restaurant,null=True,blank=True,default = None,help_text="The restaurant the customer order from")
    email = models.EmailField(...)
    mobile = PhoneNumberField(...)

我正在像这样保存对象,

orders = Order()
    checkout_form = forms.CheckoutForm(request.POST,instance=orders)
    orders = checkout_form.save(commit=False)
    anon_user = User.objects.get(id=settings.ANONYMOUS_USER_ID)
    orders.created_by = anon_user
    orders.modified_by = anon_user
    orders.status = Order.SUBMITTED
    orders.save()

如您所见,我没有保存餐厅(fk 字段),我应该怎么做。我看过这个(https://groups.google.com/forum/?fromgroups=#!topic/django-users/PcSDKZhPVmc)和其他几个例子,但它们让我更加困惑。

我需要绑定 ~Restaurant~ 来点菜,这样当我查找订单时,我就知道它属于哪家餐厅。

烦人的事情是我无法加载 djangoproject.com,已经一个星期了。

表格.py,

class CheckoutForm(forms.ModelForm):
    class Meta:
        model = Order
        exclude = ('created_by','modified_by','is_active','status','restaurant','date')

模板,

<table>
  {{ form.errors }}
  {{ form.non_field_errors }}
  {% form_table_row form.email %}
  {% form_table_row form.mobile %}
  </table>
4

2 回答 2

0

在您看来,您需要获取Restaurant对象并将其保存在order. 由于您尚未显示完整的视图代码,因此我不确定如何获取该Restaurant对象。

这是示例代码...

orders = Order()
checkout_form = forms.CheckoutForm(request.POST,instance=orders)
orders = checkout_form.save(commit=False)

#get restaurant obj
restaurant = Restaurant.objects.get(name = "some_restaurant")
orders.restaurant = restaurant

anon_user = User.objects.get(id=settings.ANONYMOUS_USER_ID)
orders.created_by = anon_user
orders.modified_by = anon_user
orders.status = Order.SUBMITTED
orders.save()
于 2013-03-11T09:37:25.753 回答
0

我想我只是在这里猜测或创建示例场景:

在用户创建信息并选择他们的餐厅后。他们必须在用户选择订单的下一个表单上进行。餐厅 ID 必须在下一个表单中传递,以便当用户提交订单时,我们将使用该餐厅 ID 来保存他们的订单。

def save_order(request, restaurant_id):
    anon_user = User.objects.get(id=settings.ANONYMOUS_USER_ID)
    orders = Order(restaurant_id=restaurant_id)

    checkout_form = forms.CheckoutForm(request.POST, instance=orders)
    checkout = checkout_form.save(commit=False)

    checkout.created_by = anon_user
    checkout.modified_by = anon_user
    checkout.status = Order.SUBMITTED
    checkout.save()
于 2013-03-11T09:57:38.943 回答