在我的模型中,我覆盖了博客模型的save-method,使用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",)}
基本上我目前定义了两次相同的功能。有关如何避免这种情况的任何想法?并且:为什么在管理员中不能使用我自己的保存方法?
答案 0 :(得分:3)
您应该将blank=True
放在slug
字段的定义中。