2013-08-13 2 views
0

표시되지, 그냥 조금 모델을 변경 : https://docs.djangoproject.com/en/1.5/intro/tutorial02/장고 설문 조사 튜토리얼 관리자가 내가 장고 설문 조사 튜토리얼 다음하고 모델 편집

내가/편집을 추가 할 때 내 알람이 관리 인터페이스에 표시되지 않는 이유가 궁금/환약을 바꾸십시오. 관리자는 관련 알람 객체가 아닌 이름을 편집하는 것을 보여줍니다. 자습서에 따라 인라인으로 표시되어야합니다.

admin.py :

from django.db import models 

class Pill(models.Model): 
    name = models.CharField(max_length=200) 
    def __unicode__(self): 
     return self.name 

class Alarm(models.Model): 
    pill = models.ForeignKey(Pill) 
    time = models.DateTimeField('Alarm time') 
    def __unicode__(self): 
     return self.time.strftime('%c') 

내 모든 모델의 유효성을 검사

from django.contrib import admin 
from pills.models import Alarm,Pill 

class AlarmInline(admin.TabularInline): 
    model = Alarm 
    extra = 3 

class PillAdmin(admin.ModelAdmin): 
    fieldsets = [ 
     ('Drug information',    {'fields': ['name']}), 
    ] 
inlines = [AlarmInline] 
list_display = ('name') 


admin.site.register(Pill, PillAdmin) 

models.py. 데이터베이스 등을 재구성 해 보았습니다 ... 아이디어가 있습니까?

답변

0

위의 코드를 올바르게 재현 한 경우 문제는 들여 쓰기입니다.

그것은해야한다 :

class PillAdmin(admin.ModelAdmin): 
    fieldsets = [ 
     ('Drug information',    {'fields': ['name']}), 
    ] 
    inlines = [AlarmInline] 
    list_display = ('name') 

inlines는 관리 클래스의 속성입니다 - 그것은 및 list_display 필요가 클래스 정의의 일부 모듈 수준에서하지 문이 될 수 있습니다.

+0

감사합니다. 들여 쓰기 구조가 복사되어 작동했습니다. 들여 쓰기 오류가 명시 적으로 발생한 이유와 그 이유를 설명해 주시겠습니까? 나는 이해하지 못했다. –

+0

'inlines'와'list_display' 선언문이 너무 멀리 떨어져 있습니다. 들여 쓰기는 클래스 구조를 제어합니다. 클래스의 일부가 아닌 관리 클래스 자체와 동일한 수준에서 선언되었습니다. –