I just wrote a custom ImageField
(I don't really know if this way is correct).
The code is above:
from django.db import router
from django.contrib.auth.models import User
from django.db.models.fields.files import ImageField, FileField
def content_file_name(instance, filename):
return "/".join([router.db_for_read(User), # DATABASE ALIAS
instance._meta.app_label, # APP NAME
instance._meta.module_name, # MODEL NAME
filename]) # FILE NAME
class NMImageField(ImageField):
"""docstring for NMImageField"""
def __init__(self, *args, **kwargs):
kwargs['upload_to'] = content_file_name
super(NMImageField, self).__init__(*args, **kwargs)
I just want a ImageField with a default upload_to
location.
The long version:
from django.db import models
from django.db import router
from django.contrib.auth.models import User
from django.db.models.fields.files import ImageField, FileField
def content_file_name(instance, filename):
return "/".join([router.db_for_read(User), # DATABASE ALIAS
instance._meta.app_label, # APP NAME
instance._meta.module_name, # MODEL NAME
filename]) # FILE NAME
class AnyModel(models.Model):
Image = models.ImageField(upload_to=content_file_name)
What I wanted to do:
from django.db import models
from myproject.utils import NMImageField
class AnyModel(models.Model):
Image = NMImageField()
I'm not really sure what I'm doing wrong.