The original concept is explained here. But overriding the method 'formfield_for_dbfield' as in that link doesn't show up the column name. To avoid that override the 'formfield_for_foreignkey' with same logic but just build the queryset as necesssary.
Following is the snippet from my code:
class NewsBentInline(admin.TabularInline):
model = NewsBent
def __init__(self, model, admin_site, dist=False):
self.dist = dist
super(NewsBentInline, self).__init__(model, admin_site)
def formfield_for_foreignkey(self, field, request, **kwargs):
parent_article = self.get_object(request, Article)
queryset = None
if field.name == "parliament":
if parent_article.district == 'District_name1':
queryset = Parliament.objects.filter(dist__name="District_name1")
else:
queryset = Parliament.objects.all()
if queryset is not None:
kwargs["queryset"] = queryset
return super(NewsBentInline, self).formfield_for_foreignkey(field, request, **kwargs)
Following is the snippet from my code:
class NewsBentInline(admin.TabularInline):
model = NewsBent
def __init__(self, model, admin_site, dist=False):
self.dist = dist
super(NewsBentInline, self).__init__(model, admin_site)
def formfield_for_foreignkey(self, field, request, **kwargs):
parent_article = self.get_object(request, Article)
queryset = None
if field.name == "parliament":
if parent_article.district == 'District_name1':
queryset = Parliament.objects.filter(dist__name="District_name1")
else:
queryset = Parliament.objects.all()
if queryset is not None:
kwargs["queryset"] = queryset
return super(NewsBentInline, self).formfield_for_foreignkey(field, request, **kwargs)
def get_object(self, request, model):
object_id = request.META['PATH_INFO'].strip('/').split('/')[-1]
return model.objects.get(pk=object_id)
No comments:
Post a Comment