Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to limit the queryset of an inline model in django admin

Tags:

I have two models implemented like

class A(models.Model):     a_name = models.CharField(max_length=50)  class B(models.Model):     a = models.ForeignKey(A)     b_tag = models.CharField(max_length=50)     user=models.ForeignKey(User)             # stores username 

Now I define an A admin and register it with B as a subclass to TabularInline. I wonder if it is possible somehow to filter the list of B objects before the inline formset is rendered, so not all B objects related to A get into the formset, only ones whose user parameter matches the currently logged in user shows up!

like image 239
krishnan Avatar asked Jun 03 '15 09:06

krishnan


1 Answers

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

Should look like:

class BAdmin(admin.TabularInline):     ...      def get_queryset(self, request):         qs = super(BAdmin, self).get_queryset(request)         return qs.filter(user=request.user) 
like image 134
noamk Avatar answered Sep 17 '22 18:09

noamk