I have a base model, and proxy models. I want to change value of upload_to of ‘image’ filed, that depends on ‘file_type’ filed.
I’m not sure how to do this, do I need to specify it in my .Manager class or in Proxy class.
Can you please give me same detail how to do this.
class FileDescription(models.Model):
class Meta:
ordering = ['file_creation_time']
TYPE_CHOICES = (
('homework', 'Homework'),
('class', 'Class Papers'),
('random', 'Random Papers')
)
subject = models.ForeignKey('Subjects', null=True, blank=True, primary_key=True)
subject_name = models.CharField(max_length=100, unique=False)
file_type = models.CharField(max_length=100, choices=TYPE_CHOICES)
....
....
image = models.ImageField(upload_to= ??????????? blank=True, null=True, max_length=255)
def __unicode__(self):
return u'%s' % (self.file_name)
class HomeworkManager(models.Manager):
def get_query_set(self):
qs = super(HomeworkManager, self).get_query_set().filter(file_type='homework')
return qs
class ClassPapersManager(models.Manager):
def get_query_set(self):
qs = super(HomeworkManager, self).get_query_set().filter(file_type='class')
return qs
class RandomPapersManager(models.Manager):
def get_query_set(self):
qs = super(HomeworkManager, self).get_query_set().filter(file_type='random')
return qs
class Homework(FileDescription):
class Meta:
proxy = True
Don’t worry about replacing
upload_tojust modify the method to handle different subclasses (use a method forupload_toif you’re not already).