2014-09-25 2 views
0

내 사이트의 백엔드 관리 기능으로 django 관리 기능을 사용하고 있습니다. 그것은 한 가지를 제외하고는 내 필요에 따라 완벽하게 작동하는 것 같습니다. 내 모델 중 하나는 사용자와 다 - 대 - 다 관계를 맺고 있습니다. 나는 나를 설비 페이지의 기능에 사용자를 추가 할 수 있도록하는 데 왔하지만, 관리자 폼이 내장되어 있기 때문에, 내가 그것을 수정하는 방법을 모르는Django 관리자 사용자 양식에 ManyToMany 관계 추가

class Facility(models.Model): 
    id = models.IntegerField(primary_key=True) 
    name = models.TextField()  
    users = models.ManyToManyField(User)  
    def __str__(self): 
     return str(self.id)  

다음은 모델입니다. 나는 SO에 원하는처럼 보였다 것을 발견

admin.site.unregister(User) 

class MyUserAdmin(UserAdmin): 
    add_fieldsets = (
     (None, { 
      'classes': ('wide',), 
      'fields': ('username', 'email', 'password1', 'password2')} 
     ), 
    ) 

admin.site.register(User, MyUserAdmin) 

내가 facility 또는 facilities 또는 facilitys 이메일을 교환하는 시도를하지만 문제가 해결되지 것이 매우 명백 듯 물론 그것은하지 않았다. 어떤 사람이 조언을 하나합니까?

+0

InlineModelAdmin을 사용해 보셨습니까? – schillingt

+0

@schillingt 나는 그것을 가로 지르는 것을 기억하지만, 내가 필요로하는 것처럼 보였습니다. 여기 어떻게 사용할 수 있습니까? 기본 admin 사용자 추가/편집 페이지에서 여러 선택 드롭 다운을 넣으려고합니다. – Hoopdady

+0

나는 이것이 당신이 찾고있는 것이라고 생각한다. http://stackoverflow.com/a/11658199/1637351 – schillingt

답변

1

django에서이 기능의 이름은 related_name이거나 SQLAlchemy의 "back reference"입니다. 당신이 docs에서 볼 수 있듯이 : 모델이 외래 키를 가지고

경우, 외래 키 모델의 인스턴스는 첫 번째 모델의 모든 인스턴스를 반환하는 관리자에 액세스 할 수 있습니다. 기본적으로이 Manager의 이름은 FOO_set입니다. 여기서 FOO는 소문자 인 소스 모델 이름입니다.

따라서, 귀하의 경우는 facility_set를 사용해야하거나 Facility 모델 users ManyToMany 필드에 related_name를 재정의.

BTW, @schillingt : 다른 어떤 것보다 훨씬 쉽고 세련된 InlineModelAdmin을 사용하는 것이 좋습니다.

관련 문제