Я новичок в 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 строки?