2009-12-16 2 views

답변

2

그들은 특별한 마법을 없앴습니다.하지만 모델 바로 다음에 admin.ModelAdmin 하위 클래스를 두지 않아도됩니다. 모델 하위 클래스 자체. 내가 관리 디스플레이에 표시 할 목록에 필드를 추가하는 것을 잊어 버릴 가능성이 적기 때문에이 둘을 함께 유지하는 것이 더 좋습니다.

0

관리자가 아닌 사이트로 사용할 때 과도한 정보가 될 수 있으므로 어쨌든 모델에 이러한 정보를 포함시키는 것이 좋지 않을까요? (성능상의 이유로)

0

모델 정의 내에서 관리 옵션을 최신 버전의 내부 클래스로 표현할 수있는 방법이 없습니다. 그러나 models.py 파일에 Model 클래스 바로 뒤에 ModelAdmin 클래스를 넣을 수있는 이유가 없습니다. 그런 다음 정의 바로 뒤에 admin.site.register()를 호출하면됩니다.

모델에 대해 두 번 이상 호출되는 register() 문제가 발생하여 오류가 발생할 수 있습니다. models.py는 한 번만로드되어야합니다. 그래야 작동 할 것입니다. 그렇지 않다면 반드시 models.py 클래스에 Model.py 클래스를 선언 한 다음 모든 register() 호출을 admin.py에 넣을 수 있습니다. 이 모범 사례가되고있다처럼 보인다 -

  • 협약 : 내가 생각할 수있는

    몇 가지 이유가 있습니다 admin.py에 그것을 넣어합니다.

  • 디커플링 - 관리자 정의는 실제로 모델과 관련이 없습니다.
  • 청결 - 아마도 많이 변경하지 않을 물건으로 models.py 파일을 채울 필요가 없습니다.

하지만 models.py 파일이 너무 길어서는 안되면 서로 바로 옆에있는 매력을 볼 수 있습니다. 당신의 모델 내부

+0

를 원하는 것을 정의한다. contrib.admin이 모델과 같이 핵심은 아닙니다. 모델 (음, 장고에 없지만, 내 뜻을 알 수 있습니다.) 많은 사람들이 관리자가 장고의 왕관 보석 중 하나라고 생각합니다. 그리고 사실 나는 종종 관리자 변경 페이지의 필드 주문 및 그룹화를 조작하는 것입니다. 모델에 새로운 필드를 추가 할 때 느낌이 듭니다 ... admin에서 그 쇼를 만들기 위해 다른 파일을 편집해야하는 것은 적절하지 않습니다. 물론, 나는 아직도 중괄호를 갈망한다. 그래서 아마 나는 단지 공룡이다. –

+0

Admin 클래스를 내 모델에 적용 해 보았습니다. 즉시 인라인 정의에 문제가 생겼습니다. 필자가 '인라인'하고 싶은 모델은 나중에 같은 파일 *에 정의되어 * NameError와 충돌합니다. '정의되지 않았습니다'. 이건 빨대 일거야 ... –

+0

@Off Rhoden : 당신은 당신의 모델 클래스 뒤에 당신의 관리자 정의를 넣어야 할 것입니다. 그것을 참조하기 전에 먼저 정의되어야합니다. – sheats

0

사용 클래스 관리자 유 클래스 메타 사용하고 유 종류의 ... 동의