0

データベースに保存されていないカスタム フォームがあります。エラーは発生しませんが、値がデータベースに保存されません。何か案は?

ビュー.py

def diseasestateoption(request, disease_id, state_id):

    state = get_object_or_404(State, pk=state_id)
    disease = get_object_or_404(Disease, pk=disease_id)


    if request.method == "POST":
        form = UpdateStateWithOptionsForm(request.POST, instance=state)

        if form.is_valid(): 
           for option_id in request.POST.getlist('options'):
               state_option = StateOption.objects.create(partstate=state, partoption_id=int(option_id))
               state_option.save()
        return HttpResponseRedirect(reverse('success'))

else:
    form = UpdateStateWithOptionsForm(instance=state)

models.py

class Option(models.Model):
        relevantdisease = models.ForeignKey(Disease)
        option = models.CharField(max_length=300)

class State(models.Model):
       state = models.CharField(max_length=300, verbose_name='state')
       relevantdisease = models.ForeignKey(Disease, verbose_name="disease")
       relevantoption = models.ManyToManyField(Option, through='StateOption')

class StateOption(models.Model):
       parttstate = models.ForeignKey(State)
       partoption = models.ForeignKey(Option)

フォーム.py

class UpdateStateWithOptionsForm(forms.ModelForm):
    class Meta:
       model = State
       exclude = ['state', 'relevantdisease']

    def __init__(self, *args, **kwargs):
       super(UpdateStateWithOptionsForm, self).__init__(*args, **kwargs)
       self.fields['relevantoption']=forms.ModelMultipleChoiceField(queryset=Option.objects.all(),required=True, widget=forms.CheckboxSelectMultiple)
4

1 に答える 1

1

問題は、POST からオプションを取得することにあると思います。

request.POST.getlist('relevantoption')

それ以外の

request.POST.getlist('options')

それとは別に、ここで単一の複数選択フィールドにフォームを使用する理由は、選択肢も変更していて、form.save も使用していない場合でもです。

于 2013-08-27T17:50:43.543 に答える