Django Admin:如何根据另一个ForeignKey选项动态填充建议的ForeignKey值?

2024-10-05 15:30:02 发布

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

有没有一种方法可以动态更改Django Admin中ForeignKeys在SelectFields中显示的值?而不必编写一些自定义的JS来完成它。在

例如,我有两个模型:主题讨论领域。 主题有一个讨论区域,如

class Topic(models.Model):
    area = models.ForeignKey(AreaOfDiscussion, null=False)

现在我要添加一个讲座模型,它必须同时包含一个主题和一个区域。在

^{pr2}$

我希望用户(管理面板)能够首先选择一个区域,然后根据选择,给他/她一个所选区域的可用主题列表。这能实现吗?在


Tags: django方法模型区域主题topicmodeladmin
2条回答

您可以使用django-smart-selects软件包: https://github.com/digi604/django-smart-selects

第一个设置主题=模型.Fk(…,null=True)

class AdminLecture(admin.ModelAdmin):
    object = None

    def get_object(self, request, object_id):
        self.object = super(AdminLecture, self).get_object(request, object_id)
        return self.object

    def formfield_for_foreignkey(self, db_field, request, **kwargs):

        if self.object and db_field.name == 'topic':
            kwargs['queryset'] = Topic.objects.filter(area=self.object.area)
        return super(AdminLecture, self).formfield_for_foreignkey(db_field, request, **kwargs)

然后按下保存并继续编辑

相关问题 更多 >