我有一个Django模型,它有一个名为url
的属性,当访问它时,在s3上返回一个S3签名的文档URL。签名URL已过期,因此我不保存到模型,需要在访问模型时生成。
我想在访问文档时将此动态属性添加到管理部分(但这不是保存到模型的字段,它是模型上的属性)
我该怎么做?
答案 0 :(得分:2)
readonly_fields
属性中
fields
或fieldsets
属性中
醇>
EG:
class MyModel(models.Model):
# fields here
def s3_url(self):
return ... # some calculated URL
class MyAdmin(admin.Admin):
readonly_fields = ('s3_url',)
fields = (..., 's3_url')
s3_url
是否真的是一个属性,使用@property
装饰器声明,或者只是一个可调用的,不应该有所区别。唯一的问题是像short_description
这样的一些可调用属性可以让你自定义行为,但不能与@property
完美配合。