【问题标题】:Why method "prepopulated_fields" doesn't work after saving object in Django admin?为什么在 Django admin 中保存对象后方法“prepopulated_fields”不起作用?
【发布时间】:2023-03-24 12:45:01
【问题描述】:

我已经描述了一个模型,其中 slug 字段自动填充另一个字段的值,但在保存对象后,slug 停止工作。我希望每次保存对象时 slug 字段都能按预期工作。

models.py

class Product(models.Model):
    name = models.CharField(max_length=200, db_index=True)
    slug = models.SlugField(max_length=200, db_index=True, unique=True)

admin.py:

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    save_as = True
    prepopulated_fields = {'slug': ('name',)}

文档说这是故意的。如果有人能分享他们解决这个问题的经验,我会很高兴。

【问题讨论】:

  • 通常蛞蝓应该被重命名,因为Cool URIs do not change.
  • 我知道,但是有没有办法避免这条规则?

标签: javascript django django-models admin


【解决方案1】:

这应该可以工作

class Product(models.Model):
    name = models.CharField(max_length=200, db_index=True)
    slug = models.SlugField(max_length=200, db_index=True, unique=True)
    
    def save(self, *args, **kwargs):
        from django.utils.text import slugify
        self.slug = slugify(self.name)
        super(Product, self).save(*args, **kwargs)

【讨论】:

  • 否 :( 不幸的是,这无助于解决问题,因为这种构造仅在该字段最初为空时才有效。
猜你喜欢
  • 1970-01-01
  • 2018-09-24
  • 2020-04-20
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多