Связанные таблицы/модели в Django - больше, чем внешние ключи

Я разрабатываю проект Django, в котором мне нужно следующее (я хочу реализовать что-то более сложное, но здесь упрощенно):

Table: work_order
Columns: owner_id,
         ...,
         contract_file_id (maps to 'all_files.id')

Table: labour_license
Columns: owner_id,
         ...,
         license_file_id (maps to 'all_files.id')

Table: all_files
Columns: id (UUID4Field),
         category (CharField,
                  'contract' if linked to 'work_order.contract_file_id',
                  'labour_lic' if linked to 'labour_license.license_file_id')
         file (FileField)
         ...
  • Когда файл загружается в work_order, он должен вставлять строку в all_files с category='contract'; аналогично для labour_license.
  • Когда нужно получить доступ к файлу с определенным UUID4, я хочу запросить обратно owner_id (в таблице work_order, если all_files.category='contract'; аналогично для labour_license.
  • )

У меня буквально десятки подобных файловых полей, и я хотел бы написать какой-нибудь Mixin или пользовательское поле, или даже метакласс, если потребуется, который я мог бы использовать для всех подобных файловых полей. Если это возможно, буду признателен за идеи или направления, которые я могу рассмотреть.

Вернуться на верх