23

I was looking at Django fixtures in the docs, there was no mention of preloading images into the database. I can't be the only who needed to do this. Is this possible? If so how? If not, are there any workarounds available?

Please and thank you.

Mahdi Yusuf
  • 19,931
  • 26
  • 72
  • 101

2 Answers2

21

Yes, it's possible. You have to put your image in your project MEDIA_ROOT. In fixtures it will look like

[{
    "pk": 1,
    "model": "pictures.picture",
    "fields": {
        "image": "/media/gebakken_kip_met_korianderrijst_1152_x_1728.png"

    }
}]
sth
  • 222,467
  • 53
  • 283
  • 367
srusskih
  • 567
  • 4
  • 9
  • 3
    This is adding a link to the image, not adding the image it self, but could do what you are looking for. – Danosaure Mar 13 '13 at 17:58
  • In my case this leads to runtime error: `The joined path (/media/images/logo1.png) is located outside of the base path component (/home/myuser/myproject/myproject/src/media)` – stelios Jun 30 '17 at 15:35
8

this has been asked while ago and already been answered, i am still going to put this out there:

after dumping the fixture replace all the paths with one to a suitable placeholder image, that you manually put in your media directory. you probably should choose a path your app does not use in production, like "/media/fixture/sample.jpg". that way you could put the file into your scm of choice too.

if you have "/media" in your .gitignore (which is a good idea), don't forget to add an exception.

as an alternative, google also turns up this: https://github.com/leetrout/django-fixturemedia

Florian
  • 2,562
  • 5
  • 25
  • 35