をフィルタリング:無関係なモデルを結合し、私は参加したいと思い、次のモデル持っているクエリセット
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
とComposition
のテーブルは関連しています。各コンポジションには、[コンポーネント]テーブルの外部キーを含むDatacomponentテーブルのコンポジションフィールドによってリンクされている多くのコンポーネントがあります。
最後の目標は、Datacomponentsテーブルの特定のコンポーネント値でフィルタリングされたDatapointオブジェクトのリストを作成することです。
たとえば、いくつかのデータポイントがあるとします。 2つのコンポジションAとBを持っていれば、Aは2つの要素AAとBBを含み、値はそれぞれ30と50です。 Bは、値40,50、および60の3つの要素AA BBBおよびCCをそれぞれ含む。このシナリオでは、コンポーネントAAの値が30より大きいすべてのデータポイントを取得します。
Datacomponentはデータポイントに直接リンクされていないため、これらの2つのモデルを結合する方法はわかりません。現在私はこれをget_object_list
のtastypie
ライブラリに構築しようとしています。
ご協力いただければ幸いです。
これは簡単なのですか?お返事ありがとうございます:) – javaCity
もう1つの質問ですが、私は複数のcomponents__nameを持ち、各コンポーネントの値はある値以上でなければなりません(この場合は30とします)。すべてのテーブルが結合されるので、各コンポーネントの値がgte 30の構成のデータポイントのみを取得するにはどうすればよいですか? – javaCity