Python/Django - множественный выбор для ForeingKey
Я разрабатываю модели для базы данных, которая будет состоять из нескольких приложений. Было решено добавить простую систему управления документами, чтобы позволить бесконечным документам быть прикрепленными к различным моделям.
Это решение, о котором я думал, но я не знаю, есть ли лучший способ сделать это.
Для простоты допустим 3 модели
models.py
class Contract(models.Model):
....
class Invoice(models.Model):
....
class Personal_record(models.Model):
....
Каждая модель может иметь несколько документов, связанных по усмотрению пользователя, например:
"Договор" может иметь 1 файл_договора.pdf и "n" поправок_к_договору.pdf "Счет-фактура" - единственная модель, которая теоретически может иметь один счет-фактуру.pdf на запись. "Личная_запись" - пользователь может прикрепить/загрузить любой файл по своему желанию, поэтому "n" записей.pdf
Решением, которое я придумал, является создание другой модели под названием Documents, которая будет хранить все документы, загруженные из любой формы загрузки.
Я бы перечислил все ссылки на другие модели и сделал их пустыми, и использовал бы простое if/else для определения типа обновления ForeignKey.
class Documents(models.Model):
contract = models.ForeignKey(Contract, on_delete=models.CASCADE,blank=True, null=True)
invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE,blank=True, null=True)
p_records = models.ForeignKey(Personal_record, on_delete=models.CASCADE,blank=True, null=True)
....
Есть ли лучший способ сделать это? Может быть, иметь только одно единственное поле экземпляра?
Заранее благодарю за любой вклад