Django - Is correct this custom FileField?

221 Views Asked by At

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.

0

There are 0 best solutions below