Доброго времени суток, есть модель изображения, которое, предположим, может быть использовано в сообщении, в группе и в публикации, что-то вроде этого:
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)
Проблем никаких не возникает и все прекрасно работает, но мой вопрос в следующем:
Правильный ли подход я использую и нормально ли, что в каждом изображении как минимум два поля будут пустыми?
Грамотно ли это с точки использования места в бд и можно ли сделать лучше?