2011-02-23 3 views
1

(이 질문은 아마 dumbiest 질문 상을 이길 것이다, 그러나 나는 그것이을하려고 줄거야) python : model : 속성이 동일한 모델의 속성을 참조 할 수 있습니까?

내가 내 모델에서 간단한 메뉴 클래스가 있습니다

class Menu(models.Model): 
name = models.CharField(null=False, blank=False,unique=True,max_length=50) 
url = models.CharField(null=False, blank=False, unique=True,max_length=100) 
sortOrder = models.IntegerField(null=False, blank=False, default=0) 

이 행복하게 저를하게됩니다 한 수준의 메뉴 항목을 만듭니다.

다른 레벨을 추가하려면 동일한 모델에서 항목 참조 및 ID를 만들고이 ID가 동일한 항목의 ID가 아닌지 확인하려면 어떻게해야합니까?

1 어떻게 같은 클래스에서에 외래 키와 ID를 설정합니까 :

그래서 실제로 두 가지 질문이 있습니다? 어느 메뉴 또는 자체를 참조하면 검증되지 않습니다 :

class Menu(models.Model): 
name = models.CharField(null=False, blank=False,unique=True,max_length=50) 
url = models.CharField(null=False, blank=False, unique=True,max_length=100) 
sortOrder = models.IntegerField(null=False, blank=False, default=0) 
**parent = models.ForeignKey(Menu)** 

가 발생합니다 :

나가서 설명하자면 NameError : 이름 '메뉴는'나는 확실히이 항목의 ID를 어떻게해야합니까

2을 정의되지 않은 이 상품의 이드가 아니십니까? 레코드가 나는이 정확한 기록을 참조 할 수 없습니다 삽입 전에 그냥 가정 않으며, 나는 그것을 업데이트 할 경우 - 질문의 두 번째 부분 -

답변

1

시도 자체

parent = models.ForeignKey('self') 
+0

이 일 나중에 나만 바보 같아? :) – abolotnov

+0

나는 당신의 질문을 이해하고 있는지 잘 모르겠습니다. 여러분의 메뉴 중 일부가 상위 메뉴를 가지고 있지 않으면'models.ForeignKey ('self', null = True)'가 필요할 수도 있습니다. 그러면 상위 메뉴가 없다면 최상위 메뉴라는 것을 알 수 있습니다. 나는 아직도 혼란 스럽다. "나는 어리 석다." – czarchaic

관련 문제