Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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
Django 2.x过滤器和排序计算布尔字段_Django - Fatal编程技术网

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通常在数据库级别工作,而在您的情况下,它应该在代码级别工作。