2013-03-13 3 views
1

저는 장고를 처음 사용하고 장고 모델에서 슬러그 필드를 자동 생성하려고합니다. 그래서, 장고 (101) 튜토리얼 다음, 나는 다음과 같은 models.py에서Django 1.5 모델의 자동 생성 슬러그 필드 - django 튜토리얼의 예

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 
    slugp = models.SlugField(max_length=255, unique=True) 

    def __unicode__(self): 
     return self.question 

    def save(self, *args, **kwargs): 
     self.slugp = slugify(self.question) 
     super(Poll, self).save(*args, **kwargs) 

를 슬러그 필드를 만들려고 한 후 다음과 같이 내가 장고 API를 사용

from writedb.models import Poll, Choice 
from django.utils import timezone 
p = Poll(question="What's new?", pub_date=timezone.now()) 
p.save 
# out: <bound method Poll.save of <Poll: What's new?>> 
p.slugp 
#out: u'' 

을 내가 할 무엇이든 slugp 필드가 채워지지 않는 것 같습니다 (또는 내가 잘못 접근하는 방식입니까?) 데이터베이스에서 채워지는 필드가 보이지 않습니다. - 내가 뭘 잘못하고 있는지 궁금합니다. 모든 포인터가 많이 감사하게 될 것입니다 - 그리고 이것이 101 가지 질문이라면 유감스럽게 생각합니다.

+2

오타가 맞는지 확실하지 않지만'p.save'는'p.save()'여야합니다. 전은 단지 속성을 호출하는 것입니다 (출력에 의해 보여지는 것처럼 '). 실제로 후자는 save 메소드를 호출합니다. –

+1

@ TimmyO'Mahony : 나는 완전한 바보가되었습니다. 참으로 이것이 실종 된 것입니다. 답으로 써 주시면 제가 받아 들일 것입니다. – AJW

+1

단지 팁 :''slugp'' 대신에''slug''를 사용하십시오. Django의 많은 부분에서 기대할 수있는 기본 이름이기 때문에 많은 것을 단순화하여 어떤 경우에는 슬러그 필드를 명시 적으로 지정하지 않아도됩니다. – hayavuk

답변

4

save 메서드를 올바르게 호출하지 않습니다. p.savep.save()이어야합니다. 전자는 메소드 자체 인 save 속성의 내용을 리턴 할 것이고, 후자는 메소드를 실제로 실행합니다.