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の読み込みに失敗したことです。1週間経ちました。

forms.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ビューでは、オブジェクトを取得して、に保存する必要がありますorderRestaurant完全なビューコードを表示していないため、オブジェクトを取得する方法が正確にはわかりません。

これがサンプルコードです...

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 に答える