@Andrei1penguin1

Как организовать несколько ForeignKey в одной модели Django?

Доброго времени суток, есть модель изображения, которое, предположим, может быть использовано в сообщении, в группе и в публикации, что-то вроде этого:
class Image(models.Model):
    group = models.ForeignKey("Group", on_delete=models.CASCADE, verbose_name="group", blank=True, null=True)
    publication = models.ForeignKey("Publication", on_delete=models.CASCADE, verbose_name="publication", blank=True, null=True)
    message = models.ForeignKey("Message", on_delete=models.CASCADE, verbose_name="message", blank=True, null=True)

При сохранении изображения просто передается нужный аргумент, например для сохранения в сообщении:
Image.objects.create(message=some_message)
Или, например, при сохранении в группе:
Image.objects.create(group=some_group)
Проблем никаких не возникает и все прекрасно работает, но мой вопрос в следующем:
Правильный ли подход я использую и нормально ли, что в каждом изображении как минимум два поля будут пустыми?
Грамотно ли это с точки использования места в бд и можно ли сделать лучше?
  • Вопрос задан
  • 455 просмотров
Решения вопроса 1
@Andrei1penguin1 Автор вопроса
Всё-таки мое решение является одним из лучших и несравненно лучшим по отношению к фреймворка contenttypes, предложенным выше
Вот интересная статья, где рассказываются минусы genericrelation и рекомендуется одной из альтернатив мой вариант:
https://pythobyte.com/avoid-django-s-genericforeig...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы