繁体   English   中英

Django管理面板,“关系”和“只读”字段

[英]Django Admin Panel, Relations and ReadOnly fields

我在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,
                            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

还有我的admin.py

class DocumentAdmin(admin.ModelAdmin):
    fieldsets = (
        ('GENERAL', {
            'fields': ('title', 'attachment', 'date',  'approved')
        }),
    )
admin.site.register(Document, DocumentAdmin)

我正在努力解决两个问题:


首先,我想在DocumentAdmin界面中包括附件的字段。 我已经在Document模型中创建了一个get方法。

def get_attachment_file(self):
    return self.attachment.file

方法get_attachment_file在list_display中工作,但不在fieldset中工作

list_display = ('get_attachment_file',)

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

谢谢你们。

您应该能够添加get_attachment_file并将其设置为只读字段。 要使批准日期和批准日期后的日期设置为True,可以使用get_readonly_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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM