私は3つのモデル、つまりUser、Project、Roleの間に多対多の関係を持っています。ユーザーは、同じプロジェクトでも複数の役割を果たす複数のプロジェクトに参加することができます。この関係は、私はすでにオブジェクトの種類ごとに、すべてのCRUDビューを作成しましたDjango formsetsは多対多の関係で遅くなります
class User(models.Model):
name = models.CharField()
class Project(models.Model):
name = models.CharField()
class Role(models.Model):
name = models.CharField()
class UsersProjects(models.Model):
user = models.ForeignKey(User)
project = models.ForeignKey(Project)
roles = models.ManyToManyField(Role)
、ジャンゴに以下のクラスでモデル化されます。 User
編集ビューで、ユーザプロジェクトの追加/編集のためのフォームセットを提供する必要があります。 Project
編集ビューでは、ユーザーロールを追加/編集するためのフォームセットを提供する必要があります。例えば、プロジェクトで、私は基本的に何をしたか編集ビューでは、テンプレート内
projectedit_formset_class = inlineformset_factory(Project, UsersProjects)
project = Project.objects.get(id=2)
projectedit_formset = projectedit_formset_class(instance=project)
そしてだった、
<form method="post" action=".">
{{ projectedit_formset.as_table }}
</form>
これは、各USER-の役割のユーザーと複数選択フィールドの選択フィールドを表示しますプロジェクトにおける役割の関係。しかし、問題は、ユーザーとロールの関係の数が増えてページの読み込み時間が狂って増えることです。これは、ユーザーのリストとロールのリストを取得するたびにSQLクエリを実行するために発生します。 Djangoが同じことに対してこのように多くのクエリを実行しないようにする方法はありますか?
[これはメーリングリストに関連しています](http://groups.google.com/group/django-developers/browse_thread/thread/4c8fb46a670a6421) – vimukthi
誰もこれに応答していませんか?あなたのフォームセットにたくさんのオブジェクトがある場合、かなり悪いパフォーマンスの問題のように思えます。これについて実際に何かする方法はありませんか? – JamesD