2016-04-22 7 views
0

フロントエンド入力に基づいてフィールドに更新を許可する関数を作成しようとしています。Djangoは変数ユーザー入力のモデルフィールドを更新します。.update(key = value)

ハンドラは、2つのキーでprofile_updates辞書を受信します。それぞれには、キーと値のペアのリストが含まれます。

list_of_updates['custom_permissions'] = [{"is_staff":"True"},{"other_permission":"False"}]

def update_profile(message): 
    list_of_updates = message['profile_updates'] 
    user_update_id = message['user_id'] 

    for update in list_of_updates['custom_permissions']: 
     for key, value in update.iteritems(): 
      User.objects.filter(id=user_update_id).update(key=value) 

私は 'キー' .iteritemsから供給された変数を()したいと思います。

これが可能かどうか、また可能であれば、誰の意見も気に入ってください。

答えて

1

dictをループする必要はありません。 kwarg展開として渡すことができます。

def update_profile(message): 
    list_of_updates = message['profile_updates'] 
    user_update_id = message['user_id'] 

    for update in list_of_updates['custom_permissions']: 
     User.objects.filter(id=user_update_id).update(**update) 
+0

多少動作しているようです。別のテーブルでブール値を調整しようとしていますが、更新されていないようですが、エラーは発生していません。 私は "0" と "偽" ... '' 'socket.send(JSON.stringify({ "コマンド" しようとしました: "update_profile"、 "のuser_id": "1"、 を" – Tom

+0

私は整数かブール値のどちらかを送るべきだと思います。 –

+0

ええ、私はそれを見つけた。 Javascriptの開発者ではありません。最初に変数を作成し、変数をJSON.stringify()に渡す必要があります。 "var test = { " command ":" update_profile "、 " user_id ":" 1 "、 " profile_updates ":{ "custom_permissions":[{ "can_chat":偽}]}} socket.send(JSON.stringify(試験)) ' おかげ! – Tom

関連する問題