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'].SEMESTER_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