2011-11-25 3 views
1

장고 관리를 기반으로하는 앱을보다 사용자 친화적으로 조정하고 싶습니다. 사용자가 시스템에 이미 등록 된 클라이언트에 서비스를 만들 때django의 외래 키 양식 필드 관리자

Add offer page

다음 관리자 페이지가 좋다. 그러나 고객이 새로운 고객 인 경우 사용자는 +를 클릭하고 팝업에서 '새 고객 추가'양식을 제출해야합니다. 이것은 너무 혼란 스럽다.

동일한 페이지에서 인라인으로 클라이언트 데이터를 채우기 위해이 동작을 어떻게 변경할 수 있습니까?

여기 내 admin.py입니다.

class OptionOffer(admin.ModelAdmin): 
    fieldsets = (('', {'fields': (('client'), 'startDate', 'regNumber')}),) 

class OptionClient(admin.ModelAdmin): 
    fieldsets = (('', {'fields': ('code')}),) 

하고 당신은 장고 관리자의 심각한 해킹을하지 않고 더 나은 솔루션을 얻을 않을거야

class Client(models.Model): 
    code = models.CharField(verbose_name=_("Code"), max_length=11) 

class Offer(models.Model): 
    client = models.ForeignKey(Client, verbose_name = _("Client")) 
    startDate = models.DateTimeField(verbose_name = _("Start date")) 
    regNumber = models.CharField(verbose_name=_("Registration number"), max_length=6) 

답변

0

model.py. InlineModelFormsets은 현재 양식 하단에 양식을 제공하여 클라이언트를 인라인으로 추가 할 수 있도록합니다 (또는 가리킬 수 있음). 이것은 당신이 필요로하는 것처럼 보일지 모르지만, 당신은 당신의 유스 케이스에 맞지 않는다는 것을 곧 알게 될 것입니다. 클라이언트에게 제공

+0

답장을 보내 주셔서 감사합니다. 이것은 기존의 장고 관리 앱에서 남겨진 모든 단계가 나를 고통스럽게 만들 수 있다는 것을 의미합니까? 사용자가 단일 페이지에서 논리적으로 관련된 변경 작업을 수행하려는 경우가 매우 흔한 경우입니다. 아마 이런 종류의 문제에 대해 장고를 전혀 사용하지 않을 수도 있습니다. 어떻게 생각해? django 관리자 사용법에 대한 좋은 오픈 소스 예제를 가르쳐 주시겠습니까? 그래서 모범 사례를 통해 배울 수 있습니다. – user537723

1

jQuery와 같은 일부 Javascript 프레임 워크를 사용할 수 있으며 iframe 또는 유사한 것을 사용하여 편집 페이지에서 팝업을로드 할 수 있습니다. 또는 장고 표준 대신 라이트 박스 스타일의 팝업을 사용하십시오.