Python Django管理面板、关系和只读字段
我在model.py中有一个非常简单的方案Python Django管理面板、关系和只读字段,python,django,Python,Django,我在model.py中有一个非常简单的方案 class Attachment(models.Model): name = models.CharField(max_length=100, verbose_name='name') file = models.FileField(upload_to=settings.MEDIA_ROOT, null=True,
class Attachment(models.Model):
name = models.CharField(max_length=100,
verbose_name='name')
file = models.FileField(upload_to=settings.MEDIA_ROOT,
null=True,
verbose_name='file')
def __str__(self):
return self.name
class Document(models.Model):
title = models.CharField(max_length=250, blank=False)
attachment = models.ForeignKey('Attachment', null=True, on_delete=models.CASCADE)
date = models.DateField(blank=True)
approved = models.BooleanField(default=False)
def __str__(self):
return self.title
还有我的管理员
class DocumentAdmin(admin.ModelAdmin):
fieldsets = (
('GENERAL', {
'fields': ('title', 'attachment', 'date', 'approved')
}),
)
admin.site.register(Document, DocumentAdmin)
有两个问题我正在努力解决:
首先,我想在DocumentAdmin界面中包含附件字段。我在文档模型中创建了一个get方法
def get_attachment_file(self):
return self.attachment.file
方法get\u attachment\u file正在列表显示中工作,但不在字段集中
list_display = ('get_attachment_file',)
此外,我希望在“approved”设置为“True”后,将字段“approved”和“date”设置为只读
谢谢大家。您应该能够添加get\u attachment\u文件并使其成为只读字段。 要使“批准”和“批准后日期只读”设置为True,可以使用get\u readonly\u fields方法
def get_readonly_fields(self, request, obj=None):
readonly_fields = ('get_attachment_file',)
if obj and obj.approved:
readonly_fields += ('approved', 'date')
return readonly_fields