2016-10-03 1 views
1

Ich habe 2 verwandte Modell von M2M Art der Beziehung. Ich verwende filter_horizontal im Admin zum Bearbeiten meiner Entitäten.Django filter_horizontal filter

Allerdings möchte ich eine Kontrolle haben, was auf der linken Seite des filter_horizontal Widget dargestellt wird. Ich möchte zum Beispiel nur die Entitäten filtern und anzeigen, die bestimmte Kriterien erfüllen.

Antwort

0

Dieses Thema ist im Django-Admin immer knifflig. Ich nehme an, dass in der Inline-defenition Sie etwas tun können:

Klasse Badmin (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! Ich denke, es wird das Modell, das Sie bearbeiten, fangen, aber nicht "Kinder", die in der linken Box von "filter_horizontal" vorbelegt sind. –

3

Ich glaube, ich es gefunden!

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)