django - Django 如何自动获取用户的 ID?
问题描述
我是 django 的新手,如何在提交表单时获取客户模型的 ID。例如
约翰正在提交预订表格,我希望自动获取提交预订的人。意味着在客户注册表格时,链接将发送给客户进行预订。在预订时,我想为预订自动初始化客户。表示 john 预订了汽车,并提供了他想要预订汽车的时间的详细信息。
楷模
class Booking(models.Model):
class Meta():
db_table = "booking"
verbose_name = "Booking"
verbose_name_plural = "Bookings"
ordering = ['-booking_date']
booking_car_car = models.ForeignKey(
Car,
on_delete=models.CASCADE,
related_name='booking_car_car_key'
)
booking_customer_customer = models.ForeignKey(
Customer,
on_delete=models.CASCADE,
related_name='booking_customer_customer'
)
booking_start_date = models.DateField(
blank=False,
null=False
)
booking_end_date = models.DateField(
blank=False,
null=False
)
booking_total_price = models.IntegerField(
blank=False,
null=False
)
booking_approved = models.NullBooleanField(
blank=True,
null=True
)
booking_date = models.DateTimeField(
auto_now_add=True,
blank=False,
null=False
)
def __str__(self):
return self.booking_customer_customer.customer_firstname
class Customer(models.Model):
first_name = models.CharField(max_length=64,null= False)
last_name = models.CharField(max_length=64)
customer_age = models.IntegerField(blank=True, null=True)
last_name = models.CharField(blank=True, max_length=100)
license_year = models.IntegerField(blank=False, null=False)
tlc_number = models.IntegerField(blank=False ,null=False)
contact_num =models.IntegerField(blank=False, null=False)
contact_email = models.EmailField(blank =False)
def __str__(self):
return self.first_name
意见
def rentacar_booking(request):
if request.POST:
template = Template.objects.get(template_default__exact=1)
template_page = template.template_alias + str("/rentacar/rentacar_booking_form.html")
menu_config_list = MenuItemRentacarList.objects.all()[0]
menu_config = MenuItemRentacarList.objects.get(id=menu_config_list.id)
args['main_menu'] = MenuMenu.objects.get(id__exact=template.template_main_menu_id)
args['menu_items'] = MenuItem.objects.filter(
menu_item_menu=args['main_menu'],
menu_item_published=1,
)
args['current_menu_item'] = menu_config.menu_item_rentacar_list_menu_item
all_modules = Module.objects.filter(
module_show_option__exact='all',
module_published=1
)
selected_modules = Module.objects.filter(
module_show_option__exact='selected',
module_published=1,
module_menu_item=args['current_menu_item']
)
excluded_modules = Module.objects.filter(
module_show_option__exact='except',
module_published=1,
).exclude(
module_menu_item=args['current_menu_item']
)
args['modules'] = list(chain(all_modules, selected_modules, excluded_modules))
try:
args['car'] = Car.objects.get(id__exact=request.POST.get('car_id'))
except:
args['car'] = None
if args['car'] is not None:
return render(request, template_page, args)
else:
return HttpResponseRedirect('/rentacar/list/')
else:
return HttpResponseRedirect('/')
def rentacar_booking_review(request):
if request.POST:
menu_config_list = MenuItemRentacarList.objects.all()[0]
menu_config = MenuItemRentacarList.objects.get(id=menu_config_list.id)
template = Template.objects.get(template_default__exact=1)
template_page = template.template_alias + str("/rentacar/rentacar_booking_review.html")
args['main_menu'] = MenuMenu.objects.get(id__exact=template.template_main_menu_id)
args['menu_items'] = MenuItem.objects.filter(
menu_item_menu=args['main_menu'],
menu_item_published=1,
)
args['current_menu_item'] = menu_config.menu_item_rentacar_list_menu_item
all_modules = Module.objects.filter(
module_show_option__exact='all',
module_published=1
)
selected_modules = Module.objects.filter(
module_show_option__exact='selected',
module_published=1,
module_menu_item=args['current_menu_item']
)
excluded_modules = Module.objects.filter(
module_show_option__exact='except',
module_published=1,
).exclude(
module_menu_item=args['current_menu_item']
)
args['modules'] = list(chain(all_modules, selected_modules, excluded_modules))
book_customer_name = request.POST.get('book_customer_name')
book_customer_lastname = request.POST.get('book_customer_lastname')
book_customer_age = request.POST.get('book_customer_age')
book_customer_idno = request.POST.get('book_customer_idno')
book_customer_license_expire = request.POST.get('book_customer_license_expire')
book_customer_phone = request.POST.get('book_customer_phone')
book_customer_email = request.POST.get('book_customer_email')
book_booking_start_date = request.POST.get('book_booking_start_date')
book_booking_end_date = request.POST.get('book_booking_end_date')
book_booking_car_car = request.POST.get('book_booking_car_car')
booking_save_form = BookingApprovalForm(request.POST)
# subject = "Thank you for joining Joinbuggy"
# from_email = settings.EMAIL_HOST_USER
# to_email = form.cleaned_data.get('email')
# join_message = """Your booking is placed we will contact you later """
# send_mail(subject=subject, from_email=from_email, recipient_list=[to_email], message=join_message,
# fail_silently=False)
date_format = "%Y-%m-%d"
a = datetime.strptime(book_booking_start_date, date_format)
b = datetime.strptime(book_booking_end_date, date_format)
days_delta = b - a
if days_delta.days >= 1:
car_price = Car.objects.get(id__exact=book_booking_car_car)
total_price = int(car_price.car_price) * int(days_delta.days)
if booking_save_form.is_valid():
booking_approval = booking_save_form.save(commit=False)
booking_approval.book_customer_name = book_customer_name
booking_approval.book_customer_lastname = book_customer_lastname
booking_approval.book_customer_age = book_customer_age
booking_approval.book_customer_idno = book_customer_idno
booking_approval.book_customer_license_expire = book_customer_license_expire
booking_approval.book_customer_phone = book_customer_phone
booking_approval.book_customer_email = book_customer_email
booking_approval.book_booking_start_date = book_booking_start_date
booking_approval.book_booking_end_date = book_booking_end_date
booking_approval.book_booking_car_car_id = book_booking_car_car
booking_approval.book_booking_total_price = total_price
booking_approval.save()
args['booking'] = booking_approval
return render(request, template_page, args)
else:
return HttpResponseRedirect('/')
else:
return HttpResponseRedirect('/')
else:
return HttpResponseRedirect('/')
def rentacar_booking_approve(request):
args = {}
if request.POST:
uuid = request.POST.get('book_unique_id')
clear_uuid = uuid.replace('-', '')
template = Template.objects.get(template_default__exact=1)
template_page = template.template_alias + str("/rentacar/rentacar_booking_success.html")
menu_config_list = MenuItemRentacarList.objects.all()[0]
menu_config = MenuItemRentacarList.objects.get(id=menu_config_list.id)
args['main_menu'] = MenuMenu.objects.get(id__exact=template.template_main_menu_id)
args['menu_items'] = MenuItem.objects.filter(
menu_item_menu=args['main_menu'],
menu_item_published=1,
)
args['current_menu_item'] = menu_config.menu_item_rentacar_list_menu_item
all_modules = Module.objects.filter(
module_show_option__exact='all',
module_published=1
)
selected_modules = Module.objects.filter(
module_show_option__exact='selected',
module_published=1,
module_menu_item=args['current_menu_item']
)
excluded_modules = Module.objects.filter(
module_show_option__exact='except',
module_published=1,
).exclude(
module_menu_item=args['current_menu_item']
)
args['modules'] = list(chain(all_modules, selected_modules, excluded_modules))
try:
prebook = BookingApproval.objects.get(book_unique_id=request.POST.get('book_unique_id'))
except:
prebook = None
if prebook is not None:
customer_save_form = CustomerForm(request.POST)
if customer_save_form.is_valid():
customer = customer_save_form.save(commit=False)
customer.customer_firstname = prebook.book_customer_name
customer.customer_lastname = prebook.book_customer_lastname
customer.customer_age = prebook.book_customer_age
customer.customer_idno = prebook.book_customer_idno
customer.customer_license_expire = prebook.book_customer_license_expire
customer.customer_phone = prebook.book_customer_phone
customer.customer_email = prebook.book_customer_email
customer.save()
try:
saved_customer = Customer.objects.get(id=customer.id)
except:
saved_customer = None
if saved_customer is not None:
booking_save_form = BookingForm(request.POST)
if booking_save_form.is_valid():
booking = booking_save_form.save(commit=False)
booking.booking_car_car = prebook.book_booking_car_car # Complete all fields for Booking model (except approved) and sir for car? ok because its in prebook . and car is foregn key in it . right sir
booking.booking_customer_customer = customer # taking customer that we saved all his details, sure it's a foreign key!
booking.booking_start_date = prebook.book_booking_start_date
booking.booking_end_date = prebook.book_booking_end_date
booking.booking_total_price = prebook.book_booking_total_price
booking.save()
try:
booking = Booking.objects.get(id=booking.id)
except:
booking = None
if booking is not None:
args['car'] = car = Car.objects.get(id=prebook.book_booking_car_car.id)
car.car_available = 0
car.save()
prebook.delete()
return render(request, template_page, args) # Template which says that booking successful
else:
return HttpResponseRedirect('/') # Thd response page, that says that form is incorrect
else:
return HttpResponseRedirect('/') # Thd response page, that says that form is incorrect
else:
return HttpResponseRedirect('/') # Thd response page, that says that form is incorrect
else:
return HttpResponseRedirect('/') # Thd response page, that says that form is incorrect
else:
return HttpResponseRedirect('/') # Thd response page, that says that form is incorrect
else:
return HttpResponseRedirect('/')
任何人都可以帮我提供代码,因为我没有让客户预订。所有客户都显示在其中,我不想要那个下拉列表我想要自动选择
解决方案
推荐阅读
- c - 如何监视 C 模块中的静态数据?
- c - 如何修复“错误:控制到达非无效函数的结尾”?
- gitlab - 在 gitlab 中将 cucumber.options 作为环境变量传递
- mysql - 计算 MySQL 中多个外部表的引用总数
- python - 获取当前时间之前的最近时间,该时间可被 5 整除
- apostrophe-cms - 从爬虫中排除特定区域
- swift - “RTCSdpTypeAnswer”和“RTCSdpTypePrAnswer”有什么区别?
- virtualbox - 如何解决 VirtualBox 桥接适配器问题?
- python - 如何使一定长度的单词翻转?
- python - SpecificationError 的解决方案:在 agg() 和 groupby() 时不支持嵌套重命名器