Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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
Python Django管理面板、关系和只读字段_Python_Django - Fatal编程技术网

Python Django管理面板、关系和只读字段

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,

我在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
还有我的管理员

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