我的模型如下:
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")
是否可以:
使用默认title='Terms and conditions'
创建一篇文章,该文章在django-admin中将是只读的,但是可以在django-admin中对其进行修改吗?
如果已经创建了文章,请使用django shell将属性设置为只读,就像这样吗?
python manage.py shell
from articles.models import Article
terms = Article.object.get(title='Terms and conditions')
terms.title.readonly = True
此选项引发错误:
AttributeError:'str'对象没有属性'readonly'
答案 0 :(得分:1)
您可以分两个步骤进行操作:
使用Model.Admin.readonly_fields
:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields
在保存标题之前使用信号填充标题,在设置标题默认值的位置添加一个预保存钩子:https://docs.djangoproject.com/en/2.1/ref/signals/#pre-save
答案 1 :(得分:1)
在定义管理模型时,您正在寻找的是readonly_fields
。在ModelAdmin.readonly_fields attribute
根据您的情况,在 admin.py 中定义以下内容:
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
readonly_fields=('title',)
admin.site.register(Article, ArticleAdmin)
祝你好运!