过滤Django管理中的foreignkey字段

发布于 2021-01-29 18:28:21

我有以下模型:

class Entity(models.Model):
       name=models.CharField(max_length=100)

class Theme(models.Model):
   name=models.CharField(max_length=100)
   entity=models.OneToOneField(Entity)

class Company(models.Model):
    name=models.CharField(max_length=100)
    theme=models.OneToOneField(Theme,null=True,blank=True)

我想在管理员中theme添加时过滤字段Company,如下所示:

class CompanyAdmin(admin.ModelAdmin):
   def queryset(self, request):
      qs = super(CompanyAdmin, self).queryset(request)
      qs.theme.queryset = Theme.objects.filter(name__iexact='company')
      return qs

admin.site.register(Company, CompanyAdmin)

我已经尝试了很多东西,但是没有任何效果!我怎样才能做到这一点?

关注者
0
被浏览
152
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用render_change_form方法:

    class CompanyAdmin(admin.ModelAdmin):
        def render_change_form(self, request, context, *args, **kwargs):
             context['adminform'].form.fields['theme'].queryset = Theme.objects.filter(name__iexact='company')
             return super(CompanyAdmin, self).render_change_form(request, context, *args, **kwargs)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看