Django ORM запрос с полями, определяемыми пользователем

Я пытаюсь создать запрос Django ORM, чтобы заменить очень грязный необработанный SQL запрос, который я написал в прошлом, но я не уверен, что Django ORM может позволить мне это сделать. У меня есть три таблицы:

контакты
enter image description here

custom_fields
. enter image description here

custom_field_data
enter image description here

Я надеюсь, что смогу сделать с помощью ORM создание вывода, как если бы я запросил одну единственную таблицу следующим образом:
enter image description here

Возможно ли такое с помощью ORM?

РЕДАКТИРОВАНИЕ:
Моделями являются:

class Contact(models.Model):
    company = models.ForeignKey(Company, on_delete=models.PROTECT, null=True, blank=True) 

class CustomField(models.Model):  
    name = models.CharField(max_length=100)  
    company = models.ForeignKey(Company, on_delete=models.PROTECT, null=False, blank=False) 

class ContactCustomFieldValue(models.Model):  
    custom_field = models.ForeignKey(CustomField, on_delete=models.PROTECT, related_name='contact_values')  
    contact = models.ForeignKey(Contact, on_delete=models.PROTECT, related_name='custom_field_values', null=True)
    value = models.TextField(null=True)  

Решили эту проблему во многом благодаря Кену с форумов Django.

Решение, которое он предоставил, выглядело следующим образом:

subquery1 = Subquery(ContactCustomFieldValue.objects.filter(contact=OuterRef('id'), custom_field_id=1).values_list('value'))
subquery2 = ...
subquery3 = ...
subquery4 = ...

contact_list = Contact.objects.filter(...).annotate(field1=subquery1, ...)

Я доработал его под свои нужды, но в качестве отправной точки он был идеален

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