Манипулирование данными из формы в модель django - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в django и у меня проблемы с манипулированием данными из формы до того, как они достигнут таблицы (модели).

Html:

<p><label for="id_1">Choice 1:</label> <select name="choice_1" id="id_1">
  <option value="1">Apple</option>
  <option value="2">Orange</option>
</select></p>
<p><label for="id_2">Choice 2:</label> <select name="Choice_2" id="id_2">
  <option value="1">Cat</option>
  <option value="2">Dog</option>
</select></p>
<p><label for="id_3">Choice 3:</label> <select name="Choice_3" id="id_3">
  <option value="1">Italy</option>
  <option value="2">France</option>
</select></p>

Результаты этой формы в настоящее время отправляются в таблицу, например:

| ID | Choice 1 | Choice 2 | Choice 3 |
 ---- ---------- ---------- ----------
| 1  | Apple    | Cat      |  Italy   |
 ---- ---------- ---------- ----------

Я бы хотел, чтобы это было отправлено как:

| ID | Choice   | Preference |
 ---- ---------- ------------
| 1  | Choice 1 | Apple      |
| 1  | Choice 2 | Cat        |
| 1  | Choice 3 | Italy      |
 ---- ---------- ------------

Итак, если моя модель:

class user_choice(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    choice = models.CharField(max_length=30)
    preference = models.CharField(max_length=30)

Моя форма:

class SubmitChoiceForm(forms.ModelForm):

    choice_1 = forms.ChoiceField(choices=choice1, required=False)
    choice_2 = forms.ChoiceField(choices=choice2, required=False)
    choice_3 = forms.ChoiceField(choices=choice3, required=False)

    class Meta:
        model = user_choice
        fields = (
              )

Мой вид:

    def post(self, request):
        form = SubmitChoiceForm(request.POST)
        if form.is_valid():

            tip = form.save(commit= False)
            tip.user = request.user
            tip.save()
            choice_1 = form.cleaned_data['choice_1']
            choice_2 = form.cleaned_data['choice_2']
            choice_3 = form.cleaned_data['choice_3']
            form = SubmitChoiceForm()
            return redirect('home')

        args = {'form' : form}
        return render(request, self.template_name, args)

Где бы я мог манипулировать одну строку данных на желаемые 3 строки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...