Django FilePathField筛选器使用的条目

2024-06-01 08:38:48 发布

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

我有以下模型,其中FilePathField应该是唯一的:

class Gallery(models.Model):
    template = models.FilePathField(path=".../templates/galleries/", unique=True)

在管理员,我想下拉列表只显示我那些尚未使用的条目,但为了使选择在可用答案更容易。在

毕竟,在结果下拉列表中任何已经使用的选项都会给我一个错误,不需要在管理员中显示给我。不幸的是,我在这件事上遇到了麻烦。在

有谁能告诉我在哪里可以插入类似以下内容:

^{pr2}$

……或者我可能在Django的某个地方监督一个已经可以给我想要的结果的选项吗?任何帮助都将不胜感激。在


Tags: path模型true列表modelmodels管理员选项
1条回答
网友
1楼 · 发布于 2024-06-01 08:38:48

所以,经过一番挖掘,我终于想出了一个解决办法。如果有人寻求类似的解决方案,我会把它贴在这里作为答案:

为您的模型扩展一个ModelAdmin,并实现一个新的get_form()方法,该方法接受您命名的FilePathField的选择,并根据您的喜好筛选此列表。在

我举一个以上画廊模型的例子:

class GalleryAdmin(admin.ModelAdmin):
    def get_form(self, request, obj=None, **kwargs):
        used = [gallery.template for gallery in Gallery.objects.all()]
        form = super(GalleryAdmin, self).get_form(request, obj, **kwargs)
        form.base_fields['template'].choices = [choice for choice in form.base_fields['template'].choices if choice[0] not in used]
        return form

编辑:我注意到这会阻止您更改条目,因为原来设置的选项现在将被删除。我试着用这个小小的调整来实现:

^{pr2}$

希望这对将来的任何人都有帮助!在

相关问题 更多 >