【发布时间】:2013-03-13 22:45:14
【问题描述】:
我对 Django 很陌生,我正在尝试在 django 模型中自动创建一个 slug 字段。因此,按照 django 101 教程,我尝试从以下 models.py 中创建 slug 字段
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)
然后我使用 django 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 问题,我们很抱歉。
【问题讨论】:
-
我不确定这是不是拼写错误,但
p.save必须是p.save()。前者只是调用一个属性(如输出<bound method Poll.save of <Poll: What's new?>>所示),而后者实际上是调用save方法 -
@TimmyO'Mahony:我似乎完全是个白痴。确实是缺少的 () 导致了这种情况。请把它写成答案,我会接受的。
-
提示:使用
slug而不是slugp。简化了很多事情,因为这是 Django 的许多部分所期望的默认名称,使您不必在某些情况下显式指定 slug 字段。 -
@bvukelic:感谢您的提示。我会在开发时考虑到这一点。
标签: django django-models