나는 User, Project, Role의 3 가지 모델 사이에 많은 관계를 맺었다. 사용자는 동일한 프로젝트에서도 여러 역할을하는 여러 프로젝트에있을 수 있습니다. 이 관계는 장고의 다음 클래스로 모델링되었습니다.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)
각 유형의 개체에 대해 모든 CRUD 뷰를 이미 만들었습니다. User
편집보기에서 사용자 프로젝트 추가/편집을위한 formset을 제공해야합니다. 그리고 Project
편집보기에서 사용자 역할 추가/편집을위한 formset을 제공해야합니다. 템플릿에서 다음
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>
, 기본적으로 내가했다 않았다 어떤 프로젝트 편집보기에서 예를 들어 이것은 각 사용자 -에 대한 역할에 대한 사용자와 다중 선택 필드의 선택 필드를 표시 역할 관계. 그러나 문제는 사용자 - 역할 관계의 수가 페이지로드 시간이 증가하면 미친 듯이 증가하는 경우입니다. 나는 이것이 사용자 목록과 역할 목록을 가져와야 할 때마다 SQL 쿼리를 실행하기 때문에 이런 일이 발생한다는 것을 알고있다. 장고가 똑같은 많은 쿼리를 실행하지 못하도록하는 방법이 있습니까?
[메일 링리스트] (http : //groups.google.com/group/django-developers/browse_thread/thread/4c8fb46a670a6421) – vimukthi
과 관련이 있습니다. 아무도 응답하지 않았습니다. formset에 많은 객체가있는 경우 성능에 문제가있는 것처럼 보입니다. 이 일을 실제로 할 수있는 방법이 없습니까? – JamesD