Появилась необходимость привязывать заметок к проекту или встречи к проекту. Проекты, заметки и встречи лежат на 3-х отдеьлных микросервисах. Было решено хранить привязки на стороне привязываемых объектов, чтобы из микросервис проектов запрашивал заметки/встречи из соответствующих микросервисов. На микросервисах могут появиться и другие объекты, которые нужно привязывать, а потому нарисовалась таблица привязки. Её поля: Если с первыми двумя полями всё понятно: объект приходит извне, следовательно его тип — произвольное имя, а идентификатор — не является ForeignKey. А вот как быть с остальными двумя полями? Идентификатор обязан быть ForeignKey, иначе не сможем в queryset ни сортировать объекты, ни вынимать нужные поля. Простое решение уже есть в Django. Чтобы поле стало внешним ключом для объектов разного типа мы вместо `ForeignKey` используем комбинацию следующих полей: class Linker(models.Model): content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) object_
Разбираемся с GenericRelation и GenericForeignKey в Django
29 ноября 202329 ноя 2023
208
1 мин