Django Admin 사이트를 통한 데이터 추가에 대한 사례 변경 (상단/하단)

StackOverflow https://stackoverflow.com/questions/825955

  •  05-07-2019
  •  | 
  •  

문제

새 프로젝트의 관리 사이트를 구성하고 있으며 관리 사이트를 통해 데이터를 추가 할 때 '저장'을 누르는 방법에 대해 의심의 여지가 없습니다. 모든 것이 어퍼 케이스로 변환됩니다 ...

편집 : 좋아. Upper 속성을 알고 있으며 II는보기를했는데, 어떻게 해야하는지 알고 있지만 관리 사이트의 필드 구성에 사용할 수있는 속성이 있는지 궁금합니다.

도움이 되었습니까?

해결책

관리자 섹션에서 저장할 때만 대문자로만 변환하는 것이 목표라면 사용자 정의 검증으로 양식을 만듭니다 사례를 변경하려면 :

class MyArticleAdminForm(forms.ModelForm):
    class Meta:
        model = Article
    def clean_name(self):
        return self.cleaned_data["name"].upper()

당신의 목표가 항상 대문자로 가치를 갖는 것이라면 저장을 재정의하십시오 모델 필드에서 :

class Blog(models.Model):
    name = models.CharField(max_length=100)
    def save(self, force_insert=False, force_update=False):
        self.name = self.name.upper()
        super(Blog, self).save(force_insert, force_update)

다른 팁

문서에서 업데이트 된 예제는 Args, Kwargs를 사용하여 다음과 같이 통과 할 것을 제안합니다.

Django는 때때로 내장 모델 방법의 기능을 확장하여 새로운 인수를 추가합니다. 메소드 정의에서 *args, ** kwargs를 사용하는 경우 코드가 추가 될 때 해당 인수를 자동으로 지원할 수 있습니다.

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def save(self, *args, **kwargs):
        do_something()
        super(Blog, self).save( *args, **kwargs) # Call the "real" save() method.
        do_something_else()

당신은해야합니다 재정의 저장 (). 문서의 예 :

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def save(self, force_insert=False, force_update=False):
        do_something()
        super(Blog, self).save(force_insert, force_update) # Call the "real" save() method.
        do_something_else()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top