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()}) 

taken https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.foreignkey.limit_choices_to

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

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

java - Multi-Label Document Classification -

php - Dynamic url re-writing using htaccess -