Я хочу исключить эти опции из ChoiceField в формах, которые уже выбраны и находятся в базе данных. Ниже приведен код.
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)
Что я делать неправильно? Я следовал за этими 2 ссылками здесь. ссылка1 и ссылка2 . Любые предложения, пожалуйста.
Спасибо