Django 管理面板,关联和只读字段

2024-10-03 13:17:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常简单的计划型号.py你知道吗

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

还有我的管理员.py你知道吗

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\附件\文件在列表\显示中工作,但在字段集中不工作

list_display = ('get_attachment_file',)

另外,在“approved”设置为“True”之后,我想将字段“approved”和“date”设置为只读。你知道吗

谢谢大家。你知道吗


Tags: namepyselftrueattachmentgetdatereturn
1条回答
网友
1楼 · 发布于 2024-10-03 13:17:22

您应该能够添加get\附件\文件并使其成为只读字段。 要使“批准”和“批准后的日期只读”设置为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

相关问题 更多 >