2016-04-22 5 views
0

Ich versuche eine Funktion zu erstellen, die das Aktualisieren von Feldern basierend auf der Front-End-Eingabe erlaubt. Der Handler erhält ein profile_updates Wörterbuch mit zwei Schlüsseln. Jeder enthält eine Liste von Schlüssel/Wert-Paaren.Django Update-Modellfeld mit variabler Benutzereingabe ... .update (Schlüssel = Wert)

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) 

Ich mag 'Schlüssel' eine Variable aus der .iteritems() zugeführt machen.

Schätzen Sie alle Eingaben darüber, wie oder ob dies möglich ist.

Antwort

1

Sie müssen das Diktat nicht durchlaufen. Du kannst es als Kwarg-Erweiterung weitergeben.

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

Scheint etwas zu arbeiten. Es wird versucht, einen booleschen Wert in einer separaten Tabelle anzupassen, und es scheint keine Aktualisierung zu sein, aber es wirft keine Fehler auf. Ich habe versucht, "0" und "False" ... '' 'socket.send (JSON.stringify ({ "Befehl": "update_profile", "user_id": "1", " profile_updates ": {" custom_permissions ": [{" can_chat ":" 0 "},]} }))' '' – Tom

+0

Ich denke, du solltest entweder eine Ganzzahl oder einen booleschen Wert senden. –

+0

Ja, ich habe es gefunden. Kein Javascript-Entwickler. Eine variable erste zu machen und die Variable in die JSON.stringify() übergeben '' 'var test = { "Befehl": "update_profile" "user id": "1" "profile_updates": { "custom_permissions": [{ "can_chat": false}]}} socket.send (JSON.stringify (Test)) '' ' Dank !! – Tom