django forms exclude values from choicefield that are already into database

懵懂的女人 提交于 2020-04-16 02:36:54

问题


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.

Thank you

来源:https://stackoverflow.com/questions/59603479/django-forms-exclude-values-from-choicefield-that-are-already-into-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!