【发布时间】:2013-05-20 11:00:17
【问题描述】:
在我的模型中,我覆盖了我的博客模型的保存方法,以使用 slugify 方法自动填充 slug 字段。
class BlogPost(models.Model):
title = models.CharField(max_length=100,unique=True)
slug = models.SlugField(max_length=100,unique=True)
date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(Author)
body = models.TextField()
category = models.ForeignKey(BlogCategory)
def save(self, *args, **kwargs):
if not self.id:
# Newly created object, so set slug
self.slug = slugify(self.title)
super(BlogPost, self).save(*args, **kwargs)
但是如果不手动设置 slug 字段或执行类似操作,则无法在管理界面中创建新对象
class BlogPostAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
基本上,我目前定义了两次相同的功能。关于如何避免这种情况的任何想法?并且:为什么我自己的保存方法在管理员中不起作用?
【问题讨论】:
-
管理界面中的哪些“不起作用”?当你尝试时会发生什么?你得到什么错误?
-
当我通过命令更改我的数据库时,显然我将 slug 参数留空。如果我在管理员中执行相同操作,则会收到“此字段为必填项”错误。所以我必须自己动手。