2017-04-01 6 views
0

으로 변경되므로 사용자가 이전에 설정 한대로 기본 언어를 변경하려고합니다. 내 문제는 인스턴트 메신저 호출의 가치는 '영어'또는 '스페인어'이지만 실제로 작동하게하려면 'en'이나 'esp'와 같은 짧은 단어가 필요합니다. 나는 그것을 실행하려고 할 때 나는이 오류 메시지가 : userlang()가 정확히 (주어진 0) 1 개 인자를 그래서 여기기본값이 django

내가 뭘하려 :

def userlang(self): 
    return (self.user.userprofile.language) 

class 123(models.Model 
    language = models.CharField(verbose_name=_(u"Language"), 
       max_length=4, choices=settings.LANGUAGES,default=userlang) 

나는 누군가가 나를 도울 수 있기를 바랍니다 아웃.

class CustomModel(models.Model): 
    language = gender = models.CharField(
     max_length=2, 
     choices=(('en', 'English'),('es', 'Spanish')), 
     default=None, 
     blank=True, 
     null=True 
    ) 

그 다음은 간단히 사용 할 수가있다 :

+0

내가 먼저 해봤지만 userlang이 정의되지 않았기 때문에 작동하지 않습니다. 그 이름은 원래 포스트가 아니고 고맙습니다. – hansTheFranz

+0

'userlang' 함수에서'self' 파라미터를 지우고 사용하십시오. 물론, 내부에서'self'를 참조하고 있기 때문에, 이것은 작동하지 않을 것입니다. 이것에 대한 임시 해결 방법은'default'를 제거 (또는 그것을 유지하고'LANGUAGES' 선택에서 하나 설정)하고 ['save']를 오버라이드하는 것입니다 (https://docs.djangoproject.com/en/1.10/). topics/db/models/# overriding-model-methods) 메소드를 호출하고 거기에 값을 설정합니다. –

답변

1

당신은 그런 일을 사용할 수 있습니다.

물론 언어가 100 가지가 있다면 OneToMany 연관을 사용하고 이러한 패턴을 사용하지 않아야합니다.

btw. 귀하의 예는 매우 형체가 잘못 작성되었습니다. 오류가 발생하면 함수의 인수에서 "self"를 제거하십시오 ... 클래스 메소드 일 때만 필요합니다.