代码之家  ›  专栏  ›  技术社区  ›  ThunderHorn

Django使某些字段对于模型的某个元素是只读的

  •  0
  • ThunderHorn  · 技术社区  · 6 年前

    我的模型是这样的:

    class Article(models.Model):
        title = models.CharField(blank=False, null=False, max_length=200, verbose_name="title")
        description = RichTextUploadingField(blank=False, null=False, verbose_name="description")
    

    1.

    创建具有默认值的项目 title='Terms and conditions'

    2.

    如果已经创建了文章,那么使用django shell将属性设置为只读,像这样吗?

    python manage.py shell
    
    from articles.models import Article
    terms = Article.object.get(title='Terms and conditions')
    terms.title.readonly = True
    

    此选项引发错误:

    2 回复  |  直到 4 年前
        1
  •  1
  •   Marc Gouw    6 年前

    看起来你要找的是 readonly_fields ModelAdmin.readonly_fields attribute

    在您的情况下,请在中定义以下内容 管理员.py :

    from .models import Article
    
    class ArticleAdmin(admin.ModelAdmin):
        readonly_fields=('title',)
    
    admin.site.register(Article, ArticleAdmin)
    

    祝你好运!

        2
  •  1
  •   marcanuy    6 年前

    1. 在admin中使用 Model.Admin.readonly_fields : https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields

    2. 在保存标题之前,请使用信号填充标题,并在其中添加预保存挂钩以设置标题的默认值: https://docs.djangoproject.com/en/2.1/ref/signals/#pre-save