【发布时间】:2017-11-01 09:17:54
【问题描述】:
我正在尝试预填充 SlugField,但它没有发生。 我使用 python 3.6.1 和 Django 1.11。
这是我的代码。
models.py
class Post(models.Model):
STATUS_CHOICES = (
('draft', 'Черновик'),
('published', 'Опубликовано'),
)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250, unique_for_date='publish')
author = models.ForeignKey(User,
related_name='blog_posts',
default=1,)
body = RichTextUploadingField(blank=True,
default='',
config_name='awesome_ckeditor')
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=10,
choices=STATUS_CHOICES,
default='draft')
objects = models.Manager()
published = PublishedManager()
def __str__(self):
return self.title
class Meta:
ordering = ('-publish',)
def get_absolute_url(self):
return reverse('blog:post_detail',
args=[self.publish.year,
self.publish.strftime('%m'),
self.publish.strftime('%d'),
self.slug])
这是
admin.py
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'author', 'publish',
'status')
list_filter = ('status', 'created', 'publish', 'author')
search_fields = ('title', 'body')
prepopulated_fields = {"slug": ("title",)}
raw_id_fields = ('author',)
date_hierarchy = 'publish'
ordering = ['-publish', 'status']
admin.site.register(Post, PostAdmin)
网站托管在 heroku 上。 也许我可以用另一种方式自动生成 slug 字段?
【问题讨论】:
-
页面上是否有任何 javascript 错误?
-
是的。我有这个。 “未捕获的 ReferenceError:grp 未在 actions.min.js:154 中定义未捕获的 ReferenceError:grp 未在 prepopulate.min.js:42 中定义未捕获的 TypeError:$ 不是 change_form.js 中的函数:5 在 change_form.js: 20 Uncaught TypeError: $ is not a function at prepopulate_init.js:3 at prepopulate_init.js:10"
-
javascript 错误阻止 Django js 预填充 slug 字段。您可以尝试找出有关grapelli插件的javascript错误(请参阅此问题stackoverflow.com/questions/12025231/…)或覆盖保存方法以填充自己的slug字段。
-
谢谢。我会阅读并尝试修复 JS 错误。