У меня есть следующие модели я хотел бы присоединиться к:Объединение несвязанных моделей и фильтрации QuerySet
Datapoint
class Datapoint(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True) # Field name made lowercase.
composition = models.ForeignKey(Composition, models.DO_NOTHING, db_column='Composition', blank=True, null=True) # Field name made lowercase.
value = models.IntegerField(db_column='Value') # Field name made lowercase.
Composition
class Composition(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True) # Field name made lowercase.
name = models.CharField(db_column='Name', max_length=45, blank=True, null=True) # Field name made lowercase.
DataComponent
class Datacomponent(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True) # Field name made lowercase.
composition = models.ForeignKey(Composition, models.DO_NOTHING, db_column='Composition_ID', null=True, blank=True) # Field name made lowercase.
components = models.ForeignKey(Components, models.DO_NOTHING, db_column='Components_ID') # Field name made lowercase.
componentvalue = models.FloatField(db_column='ComponentValue') # Field name made lowercase.
И, наконец, Component
class Components(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True) # Field name made lowercase.
name = models.CharField(db_column='Name', max_length=45, blank=True, null=True) # Field name made lowercase.
Каждый DataPoint содержит внешний ключ к таблице композиции. Datapoint
и Composition
таблицы связаны между собой. Каждая композиция имеет много компонентов, которые связаны положением композиции в таблице Datacomponent, которая также содержит внешние ключи компонентов к таблице Component.
Конечной целью является создание списка объектов Datapoint, отфильтрованных по конкретному значению компонента в таблице Datacomponents.
Например, скажем, у нас есть несколько точек данных. Если у нас всего 2 композиции А и В. А содержит 2 элемента АА и ВВ со значениями 30 и 50 соответственно. B содержит 3 элемента AA BBB и CC со значениями 40, 50 и 60 соответственно. Один пример запроса в этом сценарии был бы: - Получить все точки данных с величиной компонента АА более 30.
Поскольку Datacomponent напрямую не связан с Datapoint, я не уверен, как объединить эти две модели. В настоящее время я пытаюсь построить это в get_object_list
библиотеки tastypie
.
Любая помощь будет высоко оценена.
Не знал, что это было так просто! Большое спасибо за ваш ответ :) – javaCity
Еще один вопрос: у меня есть несколько components__name, и каждое из значений компонентов должно быть больше или равно некоторому значению (скажем, 30 в этом случае). Поскольку все таблицы будут соединены, как мне получить только данные с композицией, каждое значение которой составляет gte 30? – javaCity