2013-08-08 10 views
0

나는 내 사이트에 ACCESS_LIST에 대한 ManyToManyField을 사용하고있는 사용자 액세스 목록 관리 access_list을 입력 한 다음 access_listaccess_update.html 페이지의 사용자를 표시합니다. 여기서 사용자는 access_list에 제출할 다른 이름을 추가하여 더 많은 공동 작업자를 허용 할 수 있습니다. access_list에서 사용자를 삭제할 수 있도록 사용자 제거 버튼도 있습니다.장고는 manytomany 필드

내 관심사는 바로 지금 사용자가 access_list에있는 경우 원래 작성자를 access_list에서 삭제하고 프로젝트에 대한 액세스를 거부 할 수 있다는 것입니다.

은 내 권한이 created_by 또는 access_list를 기반으로하지만, ForeignKey(User)이 시도 될 수 있도록 백업으로 created_by = models.ForeignKey(User)을하고 싶어하고 ManyToManyField(User)은 모델에 유효성을 검사하지 않습니다.

사용자가 공동 작업자 목록을 삭제할 수 있도록 허용하면서 프로젝트를 만든 사용자가 목록에서 부팅되지 않도록하는 더 좋은 방법이 있습니까?

답변

0

당신은 당신의 분야에 related_name을 넣을 수 있으며 확인해야합니다 :

access_list = models.ManyToManyField(User, related_name='user_access_list') 
+0

내 ManyToManyField 지금의 유효성을 검사하는 설치 작업, 문제가 ManyToManyField의 모든 사용자가 ManyToManyField에서 다른 사용자를 제거 할 수 있습니다 더 자신을 포함하여 무엇을 방지하고 싶습니다. "created_by = Models.ForeignKey (User)"는 access_list * 또는 * created_by에 대한 권한을 설정할 수 있기 때문에 도움이되지만 같은 모델에서 ForeignKey (User)와 ManyToManyField (User)를 가질 수 없습니다. –

+0

그래서 당신이 바라는 것은 변경보기에서'access_list'를 숨기고 모델에 저장하지 않도록하는 것입니다. –

+0

나는 access_list에있는 사람들이 access_list에서 사용자를 추가하거나 삭제할 수 있기를 원하지만, 원래 프로젝트를 만든 사람에 대한 보호를 원한다. 따라서 access_list에있는 사악한 사람이 access_list에서 모든 사람을 제거 할 수 없으며 전체 프로젝트를 비활성화하십시오. 지금 새 프로젝트를 만들면 access_list에 저장되고 다른 사용자를 추가 할 수 있습니다. 그러나 해당 목록의 다른 사용자가 원래 사용자를 제거 할 수 있습니다. 그걸 막을 방법이 필요해. –