更改现有对象的Django slug?

时间:2012-01-13 00:41:41

标签: django postgresql

如何更改现有对象的slug?我有两个冲突slu objects的对象,我需要更改一个来解决问题。有没有办法在管理界面中执行此操作?我没有看到一个。

1 个答案:

答案 0 :(得分:2)

您需要确保a)相应的应用程序已注册显示在管理界面中,并且b),slug已设置为包含在内。在相关应用的admin.py中,您需要确保slug属性中包含fields

<强> admin.py

class MyModelAdmin(admin.ModelAdmin):
    fields = ( ... , 'slug', ... )
admin.site.register(MyModel, MyModelAdmin)

此外,您应该尽量避免陷入两个记录具有相同slug的情况。您可以通过将unique=True添加到模型字段来执行此操作。

<强> models.py

class MyModel(models.Model):
    ...
    slug = models.CharField(max_length=128, unique=True)

如果上述问题出现问题,您必须手动更改数据库中的一个slu or或使用shell:

> manage.py shell
> from myapp.models import MyModel
> obj = MyModel.objects.get(id=0) # or whatever the id is for the problematic obj
> obj.slug = "new-slug"
> obj.save()