Skip to main content
 首页 » 编程设计

python之获取预订中的客人数量使django

2024年10月01日37kerrycode

如果每个用户都参加一个事件,他们可以进行预订,但每个事件只有一定数量的空位。

我想在事件中显示 10 个座位中还剩 5 个。 我似乎无法找到已预订且状态为“活跃”或“待定”的客人总数。

这是我的事件模型

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) 

这是我的 View 代码

 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 %}  

请您参考如下方法:

如果我理解正确,你可以试试

@property 
def bookings_total(self): 
    return self.bookings_set.filter(bookingstatus='y').count() 
 
@property 
def bookings_left(self): 
    return self.bookings_total - self.seats