0
私は私のDjangoアプリ、ProjectとProjectCategoryに2つのモデルがあり、プロジェクトはこの多値フィールドカテゴリを持っています。Python:リスト内の多値フィールドをさらに検索するにはどうすればよいですか?
class ProjectCategory(models.Model):
name = models.CharField(max_length=200)
...
class Project(models.Model):
category = models.ManyToManyField(ProjectCategory)
name = models.CharField(max_length=40)
...
私は、すべてのプロジェクトオブジェクトを取得し、リストにそれらを保存しています、ポートフォリオと呼ばれ、今私は、カテゴリ毎のプロジェクトのリストを作りたいが、私は、追加のクエリを行うことなく、それをやりたいです。
だから私は
portfolio = Project.objects.all().order_by('name')
categories = ProjectCategory.objects.all()
for category in categories:
portfolio.filter(category__name=category.name)
(これはオブジェクトのリスト内のオブジェクトを探し、ある)、それは、各プロジェクトカテゴリフィールドに存在する場合は、すべてのカテゴリを検索しなければならない...しかし、私はPythonで新しく、効率的にやる方法がわかりません。今のようにコード内で新しいクエリを作成しているのかどうかはわかりません。このための最良の方法は何でしょうか?ありがとう!
それがどのように動作しますか?私はそれがリストを "保存"することを理解していますが、私が.filter()を呼び出すと、データベースへの新しいクエリは作成されませんが、代わりにPythonでフィルタリングされますか? –
QuerySetsは遅延です。 https://docs.djangoproject.com/en/1.9/ref/models/querysets/#when-querysets-are-evaluated – okuznetsov