update select_related queryset query objects many example django-models

django-models - queryset - select_related django example



django object get/set field (4)

¿Puedo obtener el valor de un campo de objeto de otra manera que "obj.field"? ¿Existe algo como "obj.get (''field'')"? Lo mismo para establecer el valor del campo.


¿Por qué quieres esto?

Podrías usar

obj.__dict__[''field'']

supongo ... aunque no es una llamada de método

changed=[field for (field,value) in newObj.__dict__ if oldObj.__dict__[field] != value]

le dará una lista de todos los campos que cambiaron.

(aunque no estoy 100% seguro)


Para obtener campos relacionados:

def getattr_related(obj, fields): a = getattr(obj, fields.pop(0)) if not len(fields): return a else: return getattr_related(a, fields)

P.ej,

getattr_related(a, "some__field".split("__"))

Dunno, tal vez hay una mejor manera de hacerlo, pero eso funcionó para mí.


Para obtener el valor de un campo:

getattr(obj, ''field_name'')

Para establecer el valor de un campo:

setattr(obj, ''field_name'', ''field value'')

Para obtener todos los campos y valores para un objeto Django:

[(field.name, getattr(obj,field.name)) for field in obj._meta.fields]

Puede leer la documentación de Model _meta API que es realmente útil.