Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于另一个字段';在Django Admin中使字段只读;s值_Django_Django Models_Django Forms - Fatal编程技术网

基于另一个字段';在Django Admin中使字段只读;s值

基于另一个字段';在Django Admin中使字段只读;s值,django,django-models,django-forms,Django,Django Models,Django Forms,如何根据另一个字段的值使Django Admin中的字段为只读或不可编辑? 我使用了readonly\u fields=('amount',),但这无法解决我的问题,因为我需要基于另一个字段来管理它。您可以覆盖管理员的获取只读\u字段的方法: class MyAdmin(admin.ModelAdmin): def get_readonly_fields(self, request, obj=None): if obj and obj.another_field ==

如何根据另一个字段的值使Django Admin中的字段为只读或不可编辑?
我使用了
readonly\u fields=('amount',)
,但这无法解决我的问题,因为我需要基于另一个字段来管理它。

您可以覆盖管理员的
获取只读\u字段的方法:

class MyAdmin(admin.ModelAdmin):

    def get_readonly_fields(self, request, obj=None):
        if obj and obj.another_field == 'cant_change_amount':
            return self.readonly_fields + ('amount',)
        return self.readonly_fields

要从一个字段填写另一个字段,您需要向相关的
ModelAdmin
类添加一个
prepopulated\u fields
属性。例如:

class PostAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug": ("title",)}
可以找到相关文档


但是,在我目前使用的django版本(1.3)中,当使用
只读字段时,这似乎会产生一个错误。

在类的主体中声明任何永久只读字段,因为只读字段类属性将从验证中访问

这可以在维护字段顺序时执行吗?