У меня есть модель Post, модель Image и модель Channel.У меня есть внешний ключ в модели Image, связанный с моделью Post.Кроме того, я пытаюсь добавить обнуляемый внешний ключ, связанный с моделью канала.
class Image(models.Model):
post = models.ForeignKey(Post, null=True, blank=True, on_delete=models.CASCADE)
comment = models.ForeignKey(Comment, null=True, blank=True, on_delete=models.CASCADE)
news = models.ForeignKey(News, null=True, blank=True, on_delete=models.CASCADE)
message = models.ForeignKey(Message, null=True, blank=True, on_delete=models.CASCADE)
channel = models.ForeignKey(Channel, null=True, blank=True, on_delete=models.CASCADE)
file = ProcessedImageField(upload_to='uploads/%Y/%m/%d/',
processors=[Transpose()],
format='JPEG',
options={'quality': 50},
blank=True)
Меня беспокоит, что поле канала будет в основном нулевым, поскольку мне нужно только одно изображение на канал.Но изображение должно быть связано с постом.Таким образом, каждый канал имеет одно изображение, которое связано с постом.Однако сообщений и изображений будет несоизмеримо больше, чем канала, поэтому поле канала в модели изображения будет потрачено впустую большую часть времени.
Другое решение, о котором я подумал, - это создание новой модели изображения исключительно дляМодель канала и при создании нового экземпляра изображения вручную скопируйте изображение из исходного экземпляра, связанного с пост-изображением.
class ChannelImage(models.Model):
channel = models.OneToOneField(Channel)
post = models.OneToOneField(Post)
file = ProcessedImageField(upload_to='uploads/%Y/%m/%d/',
processors=[Transpose()],
format='JPEG',
options={'quality': 50},
blank=True)
//copy a file from the original post
Поэтому мой вопрос заключается в том, какова стоимость того, что в таком количестве теряются пустые внешние ключимодель есть?Можно ли использовать в модели много потерянных внешних ключей?