modelos - ¿Cómo configurar el campo de modelo django por nombre?
modelos en django (2)
Es posible que tengamos que ver más código.
setattr(f, ''bar'', ''BAR'')
debería funcionar ya que así es como Django lo hace internamente.
Asegúrate de estar llamando ''guardar'' también.
Parece que debería ser muy simple, así que me estoy perdiendo algo. Solo quiero establecer el valor de un campo en mi instancia modelo por nombre. Digamos que tengo:
class Foo(Model):
bar = CharField()
f = Foo()
Quiero establecer el valor de la barra por nombre, no accediendo al campo. Entonces algo así como:
f.fields[''bar''] = ''BAR"
en lugar de
f.bar = ''BAR''
He intentado setattr pero no persiste el valor en la base de datos. También probé a través de _meta.fields pero obtuve varios errores en el camino.
Si modifica el valor mediante setattr
, debe recordar guardar el modelo después de modificarlo. Me mordieron en el pasado cuando cambié los valores, pero olvidé guardar el modelo y obtuve el mismo resultado.
setattr(f, ''bar'', ''BAR'')
f.save()