0
0 комментариев

Привет, подскажите пожалуйста, где лучше определить логику для такого случая:
У меня есть несколько моделей, одна из которых что-то типо

class Drawing(models.Model):
    ...
    related_file = models.FileField(upload_to=dfile_location)
    extension = models.ForeignKey("FileExtension", blank=True, null=True,
                                  related_name="+")
    ...
 
    @property
    def get_extension(self):
        ext = "".join(self.related_file.name.split(".")[1:])
        return ext

Вторая модель FileExtension которая просто содержит расширения файлов (CharField с названием extension) и первичный ключ. Хочу сделать, чтобы расширение файла определялось автоматически, поэтому в моделях сделал

from django.db.models.signals import pre_save
 
...
 
def pre_save_drawing_receiver(sender, instance, *args, **kwargs):
    if not instance.extension:
        instance.extension =  FileExtension.objects.get(extension__icontains=instance.get_extension)
 
 
pre_save.connect(pre_save_drawing_receiver, sender=Drawing)

Вроде все работает, но я с джангой только знакомлюсь и поэтому тестировал это через админку. После, когда дело дошло до форм, в документации вычитал, что недостающие поля формы можно назначить в представлении на этапе валидации или до нее. Вот и вопрос в том, а где лучше или правильнее это делать? В моделях или в представлениях?

Изменен статус публикации
Добавить комментарий