2013-03-11 3 views
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)과 몇 가지 다른 예제를 보았지만, 더 많은 것을 혼란스럽게합니다.

나는 레스토랑 ~을 주문해야합니다. 이렇게하면 주문을 조회 할 때 어느 식당에 속하는지 알 수 있습니다.

짜증나는 일은 djangoproject.com을로드하지 못했습니다. 일주일이 지났습니다. 보기에

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> 
+0

어디 템플릿 및 forms.py 코드 당신이 그것을 원하는 경우에 당신이 당신의 형태로 레스토랑을 제외 왜 난 그냥 – catherine

+0

@catherine? –

+0

했다 – catherine

답변

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() 
+0

이게 더 비슷 하긴하지만 필드 orders.restaurant_id ..가 없다면 어떻게해야할까요? urls.py –

+0

url에서 어떻게해야합니까? url (r '^ checkout/$' , show_checkout, name = "checkout")' –

+0

'orders.restaurant_id'는 귀하의 양식에없는 귀하의 주문 모델입니다. 귀하의 양식에서 해당 주문을 제외해도 걱정하지 마십시오. 그들은 다르다. 이드를 전달할 수 있으려면 URL을 수정해야 레스토랑 ID를 전달할 수 있습니다. – catherine

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() 
+0

당신이 알고있는 여러 식당이 있기 때문에 나는 이름으로 레스토랑을 가져 가고 싶지 않아요. 그리고 다른 코드는 필요하지 않습니다. –

+1

@SuziemacTani, 당신은해야합니다 어떻게 든 이름이나 다른 필드로 쿼리하여 식당 객체를 가져옵니다. – Rohan

관련 문제