2017-02-10 1 views
0

Ich verwende Update oder für ein Modell erstellen, wie der folgenden Liste:Django 1.9 - Update oder erstellen, Rückgabe hinzugefügt/bearbeitet id

device_inv = Inventory.objects.update_or_create(
    defaults={ 
      'location' : site, 
      'device' : dev_name 
     }, 
    device = dev_name 
) 

Beitrag, den ich angenommen, würde ich in der Lage sein device_inv.id zu verwenden . Wie auch immer, printi device_inv bekomme ich ein Objekt und False, was ich vermute, ist das Objekt und die Antwort, ob es aktualisiert oder erstellt wurde? (True erstellt wird, falsch bearbeitet wird)

>>> print device_inv 
(<Inventory: Inventory object>, False) 

Ich habe auch ein paar Möglichkeiten zu versuchen, versucht das Objekt zuzugreifen, aber keiner scheint zu funktionieren.

>>> for i in device_inv[0]: 
... print i 
... 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'Inventory' object is not iterable 
>>> print device_inv[0]["id"] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'Inventory' object has no attribute '__getitem__' 

Könnte mir jemand in die richtige Richtung zeigen?

Antwort

3

id ist ein Attribut der Objektinstanz:

device_inv[0].id 

oder Sie können einfach tun:

device_inv, created = Inventory.objects.update_or_create(...) 
print device_inv.id 
+0

, dass es bekam, war ich fast dort mit der [ "id"] – AlexW

Verwandte Themen