from django.contrib.auth.models import User from django.db import models from django.utils.translation import ugettext_lazy as _ class BaseFile(models.Model): file = models.FileField(upload_to=".") user = models.ForeignKey(User, related_name="%(class)s", on_delete=models.PROTECT) class Meta: abstract = True def __str__(self): return self.file.name def name(self): return self.file.name class File(BaseFile): pass class ImageFile(BaseFile): caption = models.CharField( verbose_name=_("Image caption"), max_length=240, blank=True ) credit = models.CharField( verbose_name=_("Image credit"), max_length=240, blank=True )