首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法在管理应用程序中定义模型中的哪些字段可编辑?

有没有办法在管理应用程序中定义模型中的哪些字段可编辑?
EN

Stack Overflow用户
提问于 2019-06-21 00:43:55
回答 2查看 0关注 0票数 0

假设如下:

models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
class EntryAdmin(admin.ModelAdmin):
    prepopulated_fields = {'slug':('title',)}

我希望slug预先填充标题,但我不希望用户能够从管理员编辑它。我假设将fields = []添加到admin对象并且不包括slug会有效,但它没有。我也尝试在模型中设置editable = False,但这也没有用(事实上,停止渲染页面)。

思考?

EN

回答 2

Stack Overflow用户

发布于 2019-06-21 08:44:58

这个Django Snippet通过定义自定义只读窗口小部件来实现您的目的。因此,您为该字段定义了一个自定义编辑器,实际上不允许任何编辑。

票数 0
EN

Stack Overflow用户

发布于 2019-06-21 10:42:54

对于这种特殊情况,您可以将您的保存方法覆盖为slugify(它是内置方法,查看django source)标题并将其存储在slug字段中。从那里你可以很容易地检查这个slug是否确实是独一无二的,如果不是这样的话就会以某种方式改变它。

考虑这个例子:

代码语言:javascript
复制
def save(self):
    from django.template.defaultfilters import slugify

    if not self.slug:
        self.slug = slugify(self.title)

    super(Your_Model_Name,self).save()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档