获取django预订中的客人数量 [英] Getting the amount of guests in bookings made django
本文介绍了获取django预订中的客人数量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果每个用户都参加一个活动,他们可以进行预订,但是每个活动都只有一定的开放空间。
If each a user goes into an event they can make an booking, but each event only has a certain amount of space open.
我想在其中显示如果10个席位中还有5个席位,
我似乎无法找到已经预订的处于活动状态或待处理状态的客人总数。
I would like to show in the event that there are 5 out of 10 seats left. I just can't seem to find the sum of guests that have already booked with a status of being active or pending.
这是我的活动模型
class Events(models.Model):
ACTIVE = (('d', "Deactivated"), ('e', "Expired"), ('a', "Active"), ('b', "Drafts"),)
ALCOHOL = (('0','No bring own alcohol'),('1','There will be complimentary wine pairing'))
user = models.ForeignKey(User, on_delete=models.CASCADE)
active = models.CharField(max_length=1, default='b', choices=ACTIVE)
title = models.CharField(max_length=50, blank=True, default='')
description = models.TextField(max_length=500, blank=True, default='')
date = models.DateField()
time = models.TimeField()
price = models.CharField(max_length=240, blank=True, default='')
seats = models.IntegerField()
alcohol_choice = models.CharField(max_length=1, default='n' ,choices=ALCOHOL)
starter = models.TextField(max_length=350, blank=True, default='')
main_menu = models.TextField(max_length=350, blank=True, default='')
dessert = models.TextField(max_length=350, blank=True, default='')
notes = models.TextField(max_length=350, blank=True, default='')
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
@property
def bookings_total(self):
return self.user.bookings_set.filter(bookingstatus='y').count()
这是我的预订模型
class Bookings(models.Model):
OPTIONS_STATUS = (('y', "Yes"), ('n', "No"), ('p', "Pending"),)
user = models.ForeignKey(User, on_delete=models.CASCADE)
event = models.ForeignKey(Events, on_delete=models.CASCADE)
eventdate = models.DateField()
event_amount = models.CharField(max_length=50, blank=True, default='')
guests = models.IntegerField()
bookingstatus = models.CharField(max_length=50, default='p', blank=True, choices=OPTIONS_STATUS)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
这是我的视图代码
today = datetime.now().strftime('%Y-%m-%d')
events_list_data = Events.objects.filter(active='a').filter(Q(date__gte=today)|Q(date=today)).order_by('date')
这是我的模板代码
{% for event_list in events_list_data %}
-- CODE GOES HERE --
{{ event_list.bookings_total }} Seats Left
{% endfor %}
推荐答案
如果我正确理解,可以尝试
if i correctly understand, you can try
@property
def bookings_total(self):
return self.bookings_set.filter(bookingstatus='y').count()
@property
def bookings_left(self):
return self.bookings_total - self.seats
这篇关于获取django预订中的客人数量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文