Opened 4 years ago
Closed 4 years ago
#32679 closed Bug (invalid)
Django model not updating image field correctly (Raw content)
Reported by: | Marisol Cardozo | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 3.1 |
Severity: | Normal | Keywords: | models |
Cc: | cardozomarisolp@… | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
My model:
class MyModel(models.Model): picture = models.ImageField(blank=True, null=True, upload_to='pictures')
Update a single object:
>>> picture >>> <ContentFile: Raw content> >>> mymodel = MyModel.objects.get(pk=instance.pk) >>> mymodel.picture = picture >>> mymodel.save() >>> mymodel.picture >>> <ImageFieldFile: pictures/fbdfe25b-b246-4f2d-9436-dca49aef88d7.png>
Good. Url result /media/pictures/fbdfe25b-b246-4f2d-9436-dca49aef88d7.png
.
Update a single object with the update()
method:
>>> picture >>> <ContentFile: Raw content> >>> MyModel.objects.filter(pk=instance.pk).update(picture=picture) >>> mymodel = MyModel.objects.get(pk=instance.pk) >>> mymodel.picture >>> <ImageFieldFile: Raw content>
Bad. Url result: /media/Raw%20content
.
Change History (2)
comment:1 by , 4 years ago
Description: | modified (diff) |
---|
comment:2 by , 4 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
UI/UX: | unset |
Note:
See TracTickets
for help on using tickets.
You cannot use
.update()
for updating aFileField
/ImageField
, in that way you will update only a filename in the database. You should use FieldFile.save(). If you're having trouble understanding how Django works, see TicketClosingReasons/UseSupportChannels for ways to get help. There is also an open ticket #29607 for adding extra examples to the "Managing files" topic.