limiting the queryset for ManyToMany MultipleSelect in Django admin -
i have model looks this:
class event(models.model): event_dates = manytomanyfield("eventdate") #... class eventdate(models.model): event_date = datefield() #... however, in django admin multipleselect form field gets show event_dates in eventadmin, i'd limit queryset event_dates not in past.
the queryset like:
event_date_queryset = eventdate.objects.filter(event_date__gte = datetime.date.today()) but can set queryset non-past dates show in field?
(i don't have custom form eventadmin happy add one.)
you try:
event_dates = models.manytomanyfield("eventdate", limit_choices_to={'event_date__gte': date.today()}) but dates in future shown, if dates in past still associated event.
if want dates associated event manipulate modelform following
from datetime import date django.contrib import admin django import forms django.db.models import q models import event, eventdate class eventadminform(forms.modelform): class meta: model = event def __init__(self, *args, **kwargs): super(eventadminform, self).__init__(*args, **kwargs) if 'event_dates' in self.initial: self.fields['event_dates'].queryset = eventdate.objects.filter(q(pk__in=self.initial['event_dates']) | q(event_date__gte=date.today())) else: self.fields['event_dates'].queryset = eventdate.objects.filter(event_date__gte=date.today()) class eventadmin(admin.modeladmin): form = eventadminform filter_horizontal = ['event_dates']
Comments
Post a Comment