在 'LogEntry' 对象没有属性 pre_save 的创建结果中预先保存一个 slug
Pre save a slug on creation results in a 'LogEntry' object has no attribute pre_save
我正在尝试在 Django 中创建我的对象时自动生成一个 slug。
我的方法是使用pre_save
信号,使用@receiver
调用。
当我在我的 Django 管理中创建一个新条目时,我得到 'LogEntry' object has no attribute 'title'
。
我制作了一个如下所示的管理模型:
class CountryAdmin(admin.ModelAdmin):
fields = ('title', 'is_visible')
我的 Country 对象有以下 model.py
代码:
class Country(models.Model):
title = models.CharField(max_length=200)
alias = models.SlugField(max_length=200)
is_visible = models.BooleanField(default=False)
def __str__(self):
return self.title
@staticmethod
def get_all():
return Country.objects.filter(is_visible = True).order_by('title')
@receiver(pre_save)
def country_presave_callback(sender, instance, *args, **kwargs):
instance.alias = slugify(instance.title)
如何修改我的代码,以便在创建对象时始终自动创建 slug?
您应该将 sender
模型传递给 @receiver
装饰器:
@receiver(pre_save, sender=Country)
def country_presave_callback(sender, instance, *args, **kwargs):
...
在这种情况下,只有在保存 Country
的实例时才会调用回调。如果没有 sender
参数,将为 all 模型调用回调。
我正在尝试在 Django 中创建我的对象时自动生成一个 slug。
我的方法是使用pre_save
信号,使用@receiver
调用。
当我在我的 Django 管理中创建一个新条目时,我得到 'LogEntry' object has no attribute 'title'
。
我制作了一个如下所示的管理模型:
class CountryAdmin(admin.ModelAdmin):
fields = ('title', 'is_visible')
我的 Country 对象有以下 model.py
代码:
class Country(models.Model):
title = models.CharField(max_length=200)
alias = models.SlugField(max_length=200)
is_visible = models.BooleanField(default=False)
def __str__(self):
return self.title
@staticmethod
def get_all():
return Country.objects.filter(is_visible = True).order_by('title')
@receiver(pre_save)
def country_presave_callback(sender, instance, *args, **kwargs):
instance.alias = slugify(instance.title)
如何修改我的代码,以便在创建对象时始终自动创建 slug?
您应该将 sender
模型传递给 @receiver
装饰器:
@receiver(pre_save, sender=Country)
def country_presave_callback(sender, instance, *args, **kwargs):
...
在这种情况下,只有在保存 Country
的实例时才会调用回调。如果没有 sender
参数,将为 all 模型调用回调。