【问题标题】:Django "prepopulated_fields" did not workDjango“预填充字段”不起作用
【发布时间】: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 错误。

标签: python django


【解决方案1】:
从 autoslug 导入 AutoSlugField slug = AutoSlugField(populate_from='title', unique_for_date='publish')

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 2022-01-19
  • 2011-07-11
相关资源
最近更新 更多