如何使用Django模型将多个数据保存到一个表中?

时间:2019-07-08 23:44:16

标签: django django-models django-forms django-templates django-views

我有一个用表单模型保存预订数据的模型,它很好用,但仅适用于一个人。我希望当人数超过一个人时,该表格以相同的表格和相同的模型(表)向以下人员询问相同的数据。

我试图创建多个模型来保存数据,具体取决于人数,但这不是我想要的,因为我想使用一种模型来执行此操作,我的意思是从数据库中获得一张表。

这是我的模特

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人表单模型数据,它可以正常工作,但我找不到多个。 非常感谢您的帮助。

0 个答案:

没有答案