내가 호출 장고 모델장고 모델 인스턴스의 사용자 정의 방법
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)
title = models.CharField(max_length=200)
text = MarkdownField()
slug = models.SlugField(unique=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
published_date = models.DateTimeField(blank=True, null=True)
def generate_unique_slug(self):
slug = self._meta.get_field('slug')
max_length = slug.max_length
slug = orig = slugify(self.title)[:max_length]
for x in itertools.count(1):
if not Post.objects.filter(slug=slug).exists():
break
# Truncate the original slug dynamically. Minus 1 for the hyphen.
slug = "%s-%d" % (orig[:max_length - len(str(x)) - 1], x)
def publish(self):
self.published_date = timezone.now()
self.generate_unique_slug()
self.save()
에서 사용자 정의 방법을 통합하기 위해 노력하고있어 "게시", "generate_unique_slug"는 작동하지 않습니다. 예를 들어, 내가 터미널
>>> p = Post(title="Title Example", text="Text example")
>>> p.publish()
>>> p.title
'Title Example'
>>> p.published_date
datetime.datetime(2016, 6, 18, 14, 45, 12, 710452, tzinfo=<UTC>)
>>> p.slug
u''
에서이 작업을 수행 할 수 있습니다 나는이
>>> p.generate_unique_slug()
>>> p.slug
u''
내가 뭘 잘못 시도했습니다?
그건 고마워! 어쨌든, 관리자 패널에서 포스트를 만들면 슬러그가 생성되지 않습니다. 어떻게 생각합니까? –
게시 기능을 실행할 때만 슬러그가 생성됩니다. 문제가있는 곳입니까? 그렇다면 save 메소드를 대체하려고 할 것입니다. –
새로운'Post'를 만들 때 메서드가 호출되지 않기 때문입니다. 모델의 save 메소드를 수정하여 항상'generate_unique_slug'를 호출 할 수 있습니다. [this] (http://stackoverflow.com/questions/4269605/django-override-save-for-model) –