2016-08-10 6 views
0

データベース内のForeignKeyオブジェクトを変更または更新するためのボタンがテンプレートにあります。Django。 ForeignKeyオブジェクトが更新/変更されない

ただし、更新する必要があるオブジェクトは変更されません。

データベースのForeignKeyオブジェクトを更新するにはどうすればよいですか?

Views.py 

    if 'order' in request.POST: 
    status_change = request.POST['order'] 
    order = Order.objects.get(pk = status_change) 

    if order.orderstatus.ORDERSTATUS == 'Received': 
     order.orderstatus.ORDERSTATUS='Requested' 
     order.save() 
    elif order.orderstatus.ORDERSTATUS == 'Requested': 
     order.orderstatus.ORDERSTATUS = 'Completed' 
     order.save() 
    elif order.orderstatus.ORDERSTATUS == 'Completed': 
     order.orderstatus.ORDERSTATUS = 'Canceled' 
     order.save() 
    else: 
     order.orderstatus.ORDERSTATUS = 'Received' 
     order.save() 

Models.py 

RECEIVED = 'Received' 
REQUESTED = 'Requested' 
CANCELED = 'Canceled' 
COMPLETED = 'Completed' 

ORDER_STATUS = (
    (RECEIVED , 'Received'), 
    (REQUESTED, 'Requested'), 
    (CANCELED, 'Canceled'), 
    (COMPLETED, 'Completed'), 
)  

class Order(models.Model): 
    orderstatus = models.OneToOneField(OrderStatus, on_delete=models.CASCADE) 


class OrderStatus(models.Model): 

    ORDERSTATUS = models.CharField(
     max_length = 10, 
     choices = ORDER_STATUS, 
     default = RECIEVED, 
    ) 
+0

本当にわかりません最初はポイントは何ですか? –

+0

いつ、誰が変更を加えたのかを把握したかったのです。 OrderStatusにはさらにフィールドがあります。変更のログを管理するためのよりよい方法はありますか? – smchae

+0

あるかもしれませんが、私はこのパターンも厳密に使用します。 –

答えて

0

order.orderstatusそれはあなたが行う必要がありますので、独自のデータベースモデルとsaveは外部キーをまたがらないんです

order.orderstatus.save() 

代わりに:これは別のモデルである理由

order.save() 
関連する問題