2016-10-03 104 views
1

我有2个模型与M2M类型的关系有关。我在管理员中使用filter_horizontal来编辑我的实体。Django filter_horizo​​ntal filtering

但是,我想要控制在filter_horizontal小部件左侧显示的内容。例如,我想过滤并仅显示符合某些特定条件的实体。

回答

0

这个问题在Django管理员中总是很棘手。我想,在内嵌defenition你可以做这样的事情:

类巴德明(admin.TabularInline): ...

def get_queryset(self, request): 
    qs = super(BAdmin, self).get_queryset(request) 
    return qs.filter(user=request.user) 

https://docs.djangoproject.com/en/stable/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset

+0

THX!我认为它会抓住你正在编辑的模型,但不会是预先填充在“filter_horizo​​ntal”左侧框中的“子” –

3

我想我找到了!

class MyModelAdmin(admin.ModelAdmin): 
def formfield_for_manytomany(self, db_field, request, **kwargs): 
    if db_field.name == "cars": 
     kwargs["queryset"] = Car.objects.filter(owner=request.user) 
    return super(MyModelAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) 

ModelAdmin.formfield_for_manytomany(db_field, request, **kwargs)

相关问题