У меня есть модель для сохранения данных бронирования с моделью формы, и она работает очень хорошо, но только для одного человека.Я хотел бы, чтобы, когда число людей превышало человека, форма запрашивала одинаковые данные для следующих людей в той же форме с той же моделью (таблица).
Я пытался создать несколько моделей для сохранения данныхв зависимости от количества людей, но это не то, что я хочу, потому что я хочу сделать это с одной моделью, я имею в виду одну таблицу из базы данных.
Это моя модель:
class BusTicket(models.Model):
'''
Class to define a bus ticket
'''
vip_types = (
('Yes', 'Yes'),
('No', 'No'),
)
#each indivitual status
PENDING = 'Pending'
CONFIRMED = 'Confrimed'
TICKET_STATUSES = ((PENDING,'Pending'),
(CONFIRMED,'Confrimed'),
)
vip_booking = models.CharField(max_length=60, choices=vip_types, default="No")
gender = models.CharField(max_length=15, choices=gender_choices)
first_name = models.CharField(max_length = 255)
last_name = models.CharField(max_length = 255)
email = models.EmailField(max_length = 254)
active = models.BooleanField(default=True)
update = models.DateTimeField(auto_now=True)
timestamp = models.DateTimeField(auto_now_add=True)
bus_id = models.ForeignKey(BusTravels, on_delete=models.CASCADE, blank=True, null=True)
phone_number = PhoneNumberField()
def __str__(self):
return self.first_name + ' ' + self.last_name + ' ' + str(self.phone_number)
Этомоя модель формы для сохранения данных:
class BusTicketForm(forms.ModelForm):
vip_types = (
('Yes', 'Yes'),
('No', 'No'),
)
vip_booking = forms.ChoiceField(choices=vip_types, widget=forms.RadioSelect,required=True, initial=True)
class Meta:
model = BusTicket
fields = ['first_name', 'last_name', 'vip_booking', 'email', 'gender',
'phone_number', 'bus_id',]
widgets = {
'first_name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'First Name'}),
'last_name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Last Name'}),
'email': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Email'}),
'gender': forms.Select(attrs={'class': 'form-control'}),
'phone_number': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Phone number with country code'}),
}
Это моя модель представления для обработки формы:
def book_ticket(request, bus_id):
get_variable_model()
if request.user.is_authenticated:
form = BusTicketForm(request.POST, request.FILES or None)
context = {
'form': form
}
next_ = request.GET.get('next')
next_post = request.POST.get('next')
redirect_path = next_ or next_post or None
if form.is_valid():
print(request.POST)
form.save()
return redirect('register-house-thanks')
if is_safe_url(redirect_path, request.get_host()):
return redirect(redirect_path)
return render(request, 'listings/sell_houses.html', context)
else:
print("You don't have access to this page!")
return render(request, 'accounts/notpermission.html')
Как я уже сказал, я хочу сохранить те же данные в зависимости от количествачеловек, который заказывает билет от одной модели (таблицы) и одной модели формы на один пост.например, если человек - 1 человек, в форму будут введены данные для одного человека, а для другого человека -> 1 человек. У меня будут те же данные для числа людей, как это: 1 данные модели формы лица 2 данные модели формы лица 3 человекаДанные модели формы И сохраните эти данные в модель (таблицу) из одной формы данных публикации.Для одной модели данных 1 человека она работает правильно, но я не смог найти несколько.Спасибо вам большое за любую помощь.