2017-01-31 7 views
0

그냥이 모델에서 "저장"하는 방법을 묻고 싶습니다. 난이 코드를 내 코드에 추가하려고하지만 실제로 어떻게 작동하는지 모르겠다. 그 라인은 theres가 모델의 id가 아닌 경우 slugify를 저장하는 데 도움이됩니까? 정말 고마워요.Django 모델 옵션 저장

class Category(models.Model): 

    name = models.CharField(max_length=50) 
    slug = models.SlugField(editable=False) 

    def save(self, *args, **kwargs): 
     if not self.id: 
      self.slug = slugify(self.name) 
     super(Category, self).save(*args, **kwargs) 

    def __unicode__(self): 
     return self.name 

답변

1

간단한 대답 : 새로운 개체에 슬러그를 추가하는 데 도움이됩니다. 객체가 새로운 경우

는이 유효성 검사를 수행 확인하려면

if not self.id: 

이 수익을 진정한 self.id가 비어있는 경우에만 가능합니다. id이 기본 키라는 점을 감안할 때 새로운 개체에 대해서만 가능합니다. allow_unicode가 거짓 (기본) 인 경우

는 ASCII로 변환 :

self.slug = slugify(self.name) 

이제 slugify 폴더의 유틸리티를 사용하여 슬러그에 name 필드를 변환합니다. 공백을 하이픈으로 변환합니다. 영숫자, 밑줄 또는 하이픈이 아닌 문자를 제거합니다. 소문자로 변환합니다. 앞과 뒤 공백을 제거합니다. 예를 들어

: 값인 경우

slugify (값)

"은 조엘 슬러그는"출력 될 것 "조엘 --A-슬러그이다."

그리고 마지막으로 당신은 객체를 저장

super(Category, self).save(*args, **kwargs) 

를 호출합니다.

+0

가장 좋은 설명은 @neverwalkaloner – soultaker

+0

너무 감사합니다. 모델에서 바로 이렇게하는 것이 좋습니다. @neverwalkaloner – soultaker

+0

@ soultaker 당신은 매우 환영합니다! 네, 이것은 일반적인 관행입니다. – neverwalkaloner