DjangoのDBクエリで問題が発生しています。
私のDB(models.py):
class Food(models.Model):
name = models.CharField(max_length=200)
...
class Combination(models.Model):
food1 = models.ForeignKey(Food, related_name='food1')
food2 = models.ForeignKey(Food, related_name='food2')
...
組み合わせた食べ物の順序は私の問題には関係ありません。
さらに、各組み合わせは複数回(および両方向に)存在する可能性があります。
たとえば、food1 = "chocolate"&food2 ="fruit"はfood2="chocolate"&food1 = "fruit"
と同じであり、両方の組み合わせが複数回存在します。
特定の食品(food_idで識別)を含むすべての組み合わせを検索したい場合は、
現在、次のクエリを使用しています。
combinations1 = Combination.objects.filter(food1=food_id).values_list('food2')
combinations2 = Combination.objects.filter(food2=food_id).values_list('food1')
動作しますが、後でさらに処理する必要があります。ORでQオブジェクトを使用しようとしましたが、抽出された列がフィルターに依存しているため、成功しませんでした...
私はこの解決策がエレガントとはほど遠いことを知っています。2つの別々のフードフィールドを組み合わせて使用する代わりに、カスタムフィールドまたはCommaSeparatedIntegerFieldを使用する必要がありますか?1つのDBヒットで(両方の列から)要求されたすべての値を取得する方法はありますか?
私を助けてくれてありがとう!
乾杯、
オリバー