You can use python's setattr function to do this:
for k,v in fields.iteritems():
setattr(inst, k, v)
On Fri, Oct 26, 2012 at 8:37 AM, Chris Pagnutti <[email protected]>wrote:
> Say I have a model like
> class MyModel(models.Model)
> name = models.CharField(max_length=100)
> number = models.IntegerField()
>
> In a script, I want to have something like
> fields = {"name":"Joe", "number":5}
>
> And I want to update a MyModel instance using the fields dictionary,
> something like this
> inst = MyModel.objects.get(pk=2)
> for k,v in fields.iteritems():
> inst.k = v # I tried with inst.F(k) = v and inst.eval(k) = v but
> python doesn't like that either
>
> I hope I'm being clear in what I'm trying to do. The reason I have to do
> it this way is that I don't know which model, and therefore fields, I'm
> dealing with until run-time.
> Please ask questions if this isn't clear.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/django-users/-/4ZtEPAjlksQJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.