2011-03-02 5 views
0

며칠 동안 내 머리를 아프게 한 후 누군가가 올바른 접근 방식을 가르쳐주기를 바랍니다. 페이지, 요소, 스타일 및 게시의 4 가지 모델이 있습니다. http://pastebin.com/uSHrG0p2Django admin : 두 개의 외래 키가있는 Many2Many 모델의 인라인

2에서 문장 :

a 요소는 1 개 스타일 1 포스트 (2 FKS)를 참조

은 여기 내 simplyfied models.py/admin.py의 발췌 한 것입니다.

페이지는 많은 요소를 참조 할 수 있으며 요소는 많은 페이지 (M2M)에서 참조 할 수 있습니다.

페이지 인스턴스의 관리 사이트에서 '인라인'으로 M2M 관계가 포함되었습니다. 그래서 요소 - 인스턴스를 선택하는 행이 여러 개 있습니다. 다음과 같은 행이 하나 있습니다. [My Post A with My Style X] [V]

내가 원하는 것은 드롭 다운을 두 개로 대체하는 것입니다. 하나는 Post의 모든 인스턴스와 하나는 Style의 모든 인스턴스 (요소 인스턴스를 내부에 작성)가있는 인스턴스입니다. 1 행이 Element 관리 사이트와 유사하게 보일 것입니다. [My Post A] [V] [My Style X] [V]

쉽게 들리 겠지만, 2 일 동안 읽고 실험 한 후 완전히 잃어 버렸습니다. ModelForms, ModelAdmins, Formsets, ...와 함께. Django 관리자 기능에서 사용자 정의보기/양식없이이 작업을 수행 할 수 있습니까? 내 방식의

하나는 수동으로 양식 위젯을 만들려고, 이런 PageAdminForm에서 포스트/스타일 인스턴스에 액세스하는 것이 었습니다 ...하지만 그렇게하지 못했습니다

p = Page.objects.get(pk=1) 
f = PageAdminForm(instance=p) 
f.base_fields['elements'].choices.queryset[0].post 

어떤 조언을하거나 어떤 방향으로 가야 할까? 시간 내 주셔서 감사합니다.

class Element(models.Model): 
    page = models.ForeignKey(Page)   
    post = models.ForeignKey(Post) 
    style = models.ForeignKey(Style) 

이 사실이 아닌 M2M 링크가 결국 내 응용 프로그램에 대한 더 많은 의미가 있습니다 : 내가 요소의 3 외래 키가있는 페이지에 요소를 M2M 필드를 제거하고 연결 후 원하는 정확히 가지고

답변

1

.

자기에게 메모 : Django를 능가하려고 시도하기 전에 모델 관계를 다시 생각해보십시오 .-- (

관련 문제