26👍
✅
You can provide your own form for ModelAdmin, with custom queryset for foo field.
from django import forms
from django.contrib import admin
#Create custom form with specific queryset:
class CustomBarModelForm(forms.ModelForm):
class Meta:
model = Bar
fields = '__all__'
def __init__(self, *args, **kwargs):
super(CustomBarModelForm, self).__init__(*args, **kwargs)
self.fields['foo'].queryset = Foo.objects.filter(title__isnull=False)# or something else
# Use it in your modelAdmin
class BarAdmin(admin.ModelAdmin):
form = CustomBarModelForm
Something like this…
👤Pill
21👍
for django 1.6:
For foreign key:
https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#ModelAdmin.formfield_for_foreignkey
class MyModelAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "title":
kwargs["queryset"] = Foo.objects.filter(title__isnull=False)
return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
- [Django]-How to produce a 303 Http Response in Django?
- [Django]-Altering one query parameter in a url (Django)
- [Django]-Determine variable type within django template
2👍
I stumbled across this question when looking for a solution to filter dropdown options on the fly in the admin interface based on the selection in another field — not based on a pre-filtered list at page load. The solution I found was this library: https://github.com/digi604/django-smart-selects which is an app that uses ajax calls and allows chain filtering to multiple levels. Works like a charm for me. -HTH
- [Django]-What does 'many = True' do in Django Rest FrameWork?
- [Django]-Negating a boolean in Django template
- [Django]-Rendering a value as text instead of field inside a Django Form
1👍
You could subclass your own model.ModelAdmin and create a custom field for your ChoiceField…
class CustomForm(model.ModelForm):
class Meta:
model = Foo
foo = forms.ChoiceField(widget=forms.Select, initial=self.foo_queryset)
def foo_queryset(self):
return Foo.objects.filter(xy)...
class FooAdmin(model.ModelAdmin):
form = CustomForm
- [Django]-Getting Values of QuerySet in Django
- [Django]-POST jQuery array to Django
- [Django]-How to add new languages into Django? My language "Uyghur" or "Uighur" is not supported in Django
Source:stackexchange.com