Django 2.x过滤器和排序计算布尔字段
我试图找出如何通过计算的布尔字段启用排序。我看过其他一些相关的帖子,但我想不出来。我试图为文件添加自定义管理器,但没有成功。我希望能够根据计算字段(如Django 2.x过滤器和排序计算布尔字段,django,Django,我试图找出如何通过计算的布尔字段启用排序。我看过其他一些相关的帖子,但我想不出来。我试图为文件添加自定义管理器,但没有成功。我希望能够根据计算字段(如exists)对值进行排序和筛选 class File(models.Model): archive = models.ForeignKey("Archive", on_delete=models.CASCADE) file_name = models.CharField(max_length=2000, unique=False,
exists
)对值进行排序和筛选
class File(models.Model):
archive = models.ForeignKey("Archive", on_delete=models.CASCADE)
file_name = models.CharField(max_length=2000, unique=False, validators=[validate_is_file])
comment = RichTextField()
title = models.CharField(max_length=2000, default='')
def __str__(self):
return basename(self.file_name)
def save(self, *args, **kwargs):
self.title = basename(self.file_name)
super(File, self).save(*args, **kwargs)
def preview(self):
return bs4(self.comment).get_text()
def exists(self):
return isfile(self.file_name)
exists.boolean = True
def size(self):
return getsize(self.file_name)
def created(self):
return convert_ctime(time.ctime(getctime(self.file_name)))
def modified(self):
return convert_ctime(time.ctime(getmtime(self.file_name)))
class FileAdmin(admin.ModelAdmin):
readonly_fields = ['file_name', 'archive']
formfield_overrides = {
models.CharField: {'widget': TextInput(attrs={'style': 'width: 90%;'})},
}
fieldsets = [
(None, {'fields': ['title', 'comment', 'file_name', 'archive']})
]
list_display = ['exists', 'file_name', 'size', 'created', 'modified', 'title', 'preview',]
search_fields = ['title', 'file_name', 'comment', 'created', 'modified']
list_filter = ['exists'] # This does not work
admin.site.register(Archive, ArchiveAdmin)
admin.site.register(File, FileAdmin)
函数
isfile()
来自何处?os.path.isfile
list\u filtermagic通常在数据库级别工作,而在您的情况下,它应该在代码级别工作。