Sunday, January 5, 2020

django forms exclude values from choicefield

I want to exclude those options from the ChoiceField in the forms that has been already selected and are into the database. Below is the Code.

models.py

SEMESTER_CHOICES = (      ("1", "1"),      ("2", "2"),      ("3", "3"),      ("4", "4"),      ("5", "5"),      ("6", "6"),      ("7", "7"),      ("8", "8"),  )  class Publish(models.Model):      dates = models.CharField(max_length=255, choices = SEMESTER_CHOICES)        def __str__(self):          return self.dates  

form.py

  SEMESTER_CHOICES = (      ("1", "1"),      ("2", "2"),      ("3", "3"),      ("4", "4"),      ("5", "5"),      ("6", "6"),      ("7", "7"),      ("8", "8"),  )    class PublishForm(forms.ModelForm):          def __init__(self, **kwargs):          super(PublishForm, self).__init__(self, **kwargs)          selected_choices = [i.dates for i in Publish.objects.all()]                  self.fields['dates'].choices = ({(k, v) for k, v in SEMESTER_CHOICES                                               if k not in selected_choices})        class Meta:          model = Publish          fields = ['dates']  

view.py

def add(request):      if request.method == 'POST':          form = PublishForm(request.POST)          if form.is_valid():              form.save()              return redirect('mainapp:add')      else:          form = PublishForm()        context = {          'form' : form      }      return render(request, 'mainapp/add.html', context)  

What am I doing wrong? Ive followed these 2 links here. link1 and link2. Any suggestions please.

Also I am getting the error : 'PublishForm' object has no attribute 'get'

Thank you

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/6b29d03e-0cd4-4bbd-b08e-f222724b72f5%40googlegroups.com.

No comments:

Post a Comment