我有一个用表单模型保存预订数据的模型,它很好用,但仅适用于一个人。我希望当人数超过一个人时,该表格以相同的表格和相同的模型(表)向以下人员询问相同的数据。
我试图创建多个模型来保存数据,具体取决于人数,但这不是我想要的,因为我想使用一种模型来执行此操作,我的意思是从数据库中获得一张表。
这是我的模特
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人表单模型数据,它可以正常工作,但我找不到多个。 非常感谢您的帮助。