Объединение и группировка запросов в Django

Мне трудно найти наиболее эффективный способ запросить следующие сценарии, и я буду признателен за любую помощь

class Company(models.Model):
    name = models.CharField(max_length=100)

class DatapointModel(models.Model): 
    company = models.ForeignKey(Company, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    value = models.FloatField()

Теперь мне нужны все компании, у которых есть два действительных правила DatapointModel, например, компании с обоими

datapoint name='country' with value='USA'

и

datapoint name='building_color' with value='blue'

Результаты Я ищу: название компании, где оба правила точки данных удовлетворены. Это было бы просто, если бы я хранил и страну, и цвет_здания в объекте Company, но поскольку у меня так много точек данных, я не хочу структурировать свою модель таким образом, и я немного застрял на том, как запросить ее с помощью django

Если я неправильно понял ваш вопрос, ваши фильтры будут просто:

Company.objets.filter(
    datapointmodel__name="building_color", 
    datapointmodel___value="blue"
)

Вероятно, вам нужна некоторая логика, чтобы заставить вашу пару имя/значение работать разумным образом.

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