假设如下:
models.py
class Entry(models.Model):
title = models.CharField(max_length=50)
slug = models.CharField(max_length=50, unique=True)
body = models.CharField(max_length=200)
admin.py
class EntryAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug':('title',)}
我希望slug预先填充标题,但我不希望用户能够从管理员编辑它。我假设将fields = []添加到admin对象并且不包括slug会有效,但它没有。我也尝试在模型中设置editable = False,但这也没有用(事实上,停止渲染页面)。
思考?
发布于 2019-06-21 08:44:58
这个Django Snippet通过定义自定义只读窗口小部件来实现您的目的。因此,您为该字段定义了一个自定义编辑器,实际上不允许任何编辑。
发布于 2019-06-21 10:42:54
对于这种特殊情况,您可以将您的保存方法覆盖为slugify(它是内置方法,查看django source)标题并将其存储在slug字段中。从那里你可以很容易地检查这个slug是否确实是独一无二的,如果不是这样的话就会以某种方式改变它。
考虑这个例子:
def save(self):
from django.template.defaultfilters import slugify
if not self.slug:
self.slug = slugify(self.title)
super(Your_Model_Name,self).save()
https://stackoverflow.com/questions/-100001262
复制相似问题