2014-02-10 3 views
0

django에서 새로운 기능입니다. 내 질문이 있다는 것입니다 : - syncdb오류 : - 하나 이상의 모델이 유효성을 검사하지 않았습니다.

ERROR: One or more models did not validate:

내 models.py

 class practicalArea: 
     practical_area = models.CharField(max_length=25) 

     class Meta: 
      db_table = 'practical_area' 

     def __unicode__(self): 
      return self.practical_area 


class Profile(models.Model): 
     auth_user_id = models.ForeignKey(User, related_name='userProfile') 
     address = models.TextField(blank=True)   
     state = models.CharField(max_length=20) 
     practical_area = models.ForeignKey('practicalArea', related_name='practical_Area')   
     company = models.CharField(max_length=40)  
     photo = models.CharField(max_length=250) 
     created_date = models.DateTimeField() 
     modify_date = models.DateTimeField() 


     class Meta: 
      db_table = 'adminPanal_profile' 


     def save(self): 
      if self.created_date == None: 
       self.created_date = datetime.now() 
      self.modify_date = datetime.now() 
      super(Profile, self).save() 

내가 "practical_area = models.ForeignKey ('practicalArea'을 변경하는 경우

을 적용 할 때 (아래 설명) 내가 오류가 발생했습니다, related_name = 'practical_Area') "을"practical_area = models.ForeignKey (practicalArea, related_name = 'practical_Area') "

다음 내가 ERROR 가지고 :

AssertionError: ForeignKey() is invalid. First parameter to ForeignKey must be either a model, a model name, or the string 'self'

도와주세요!

+0

죄송합니다 - 나는 또한 django.db 수입 모델에서'의 라이브러리를 가져 django.contrib.auth.models에서 이 practicalArea이 모델에서 – user3292290

+0

상속한다 날짜 가져 오기 datetime'에서 사용자 를 가져 .모델. 그것은 당신의 문제를 해결해야합니다. –

+0

감사합니다 @ KamilRykowski :) – user3292290

답변

1

실용적인 클래스는 모델을 서브 클래스해야합니다. 모델. 이런 식으로 시도 :

class PracticalArea(models.Model): 
    practical_area = models.CharField(max_length=25) 

    class Meta: 
     db_table = 'practical_area' 

    def __unicode__(self): 
     return self.practical_area 


class Profile(models.Model): 
    auth_user_id = models.ForeignKey(User, related_name='userProfile') 
    address = models.TextField(blank=True)   
    state = models.CharField(max_length=20) 
    practical_area = models.ForeignKey('PracticalArea', related_name='practical_Area')   
    company = models.CharField(max_length=40)  
    photo = models.CharField(max_length=250) 
    created_date = models.DateTimeField() 
    modify_date = models.DateTimeField() 


    class Meta: 
     db_table = 'adminPanal_profile' 


    def save(self): 
     if self.created_date == None: 
      self.created_date = datetime.now() 
     self.modify_date = datetime.now() 
     super(Profile, self).save() 
+0

고맙습니다. 내 실수입니다. 오늘은 너무 수수께끼 일뿐입니다. 그래서 저는 그것을 무시합니다. 다시 한 번 감사드립니다 :) – user3292290

+0

당신은 오신 것을 환영합니다. 'related_name '이 무엇인지를 이해하는 것이 가장 좋은 때입니다. 'PracticalArea = models.ForeignKey ('PracticalArea', related_name = 'profiles')'와 같이 선언해야하며 PracticalArea 인스턴스가'pa = PracticalArea.objects.all() [0]'인 경우보다 참조 할 수 있습니다. 'pa.practical_Area.all()'대신'pa.profiles.all()'와 같은 프로파일을 사용한다. – gwaramadze

+0

@pythonishvili – user3292290

0

django는 모델 이름을 문자열로 지정하면 모델 클래스에 대한 경쟁 경로가 필요하기 때문에 모델 이름을 문자열로 제공하는 대신 직접 지정해야합니다.

practical_area = models.ForeignKey(practicalArea, related_name='practical_Area')  

사용자를 위해 작업 중입니다.

+0

문자열 대신 모델 이름을 사용하면 새 오류가 발생합니다. AssertionError : ForeignKey()가 잘못되었습니다. ForeignKey에 대한 첫 번째 매개 변수는 모델, 모델 이름 또는 'self'문자열이어야합니다. – user3292290

+0

PersonArea 클래스는 모델을 상속해야합니다. 모델 – CrazyGeek

+0

감사합니다. – user3292290

관련 문제