Связанные таблицы/модели в 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 или пользовательское поле, или даже метакласс, если потребуется, который я мог бы использовать для всех подобных файловых полей. Если это возможно, буду признателен за идеи или направления, которые я могу рассмотреть.