【问题标题】:Auto create slug field in django 1.5 models - example from django tutorial在 django 1.5 模型中自动创建 slug 字段 - 来自 django 教程的示例
【发布时间】: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()。前者只是调用一个属性(如输出&lt;bound method Poll.save of &lt;Poll: What's new?&gt;&gt;所示),而后者实际上是调用save方法
  • @TimmyO'Mahony:我似乎完全是个白痴。确实是缺少的 () 导致了这种情况。请把它写成答案,我会接受的。
  • 提示:使用slug 而不是slugp。简化了很多事情,因为这是 Django 的许多部分所期望的默认名称,使您不必在某些情况下显式指定 slug 字段。
  • @bvukelic:感谢您的提示。我会在开发时考虑到这一点。

标签: django django-models


【解决方案1】:

您没有正确调用save 方法。 p.save 必须是 p.save()。前者只会返回 save 属性的内容,这是方法本身,而后者实际执行的是方法。

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 2016-12-22
    • 2015-04-16
    • 1970-01-01
    • 2011-04-04
    • 2022-01-06
    • 2013-10-01
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多