gpt4 book ai didi

使用 Django 销售事件门票的网站中的数据库设计

转载 作者:搜寻专家 更新时间:2023-10-30 19:48:17 24 4
gpt4 key购买 nike

我在一个销售事件门票的网站上工作。我有以下设计:

Database draft

以及(为发布而简化的)模型:

class Event(models.Model):
name = models.CharField(max_lenght=20)

class Date(models.Model):
event_start = models.DateTimeField()

event = models.ForeignKey(Event)

class Ticket_Class(models.Model):
name = models.CharField(max_lenght=20)
price = models.IntegerField()

event = models.ForeignKey(Event)
  1. 我应该如何添加 Ticket 模型?因为票是针对特定日期的事件,所以我需要将票与事件和日期之间的关系联系起来
  2. Ticket_Class 还应该有一个“最大”字段,其中存储了在特定日期该特定 Ticket_Class 可售的最大票数。例如:事件“Metallica”的 Ticket_Class“Field”和 Ticket_Class“VIP”,均在三个不同的日期举行。我如何获取特定日期 Ticket_Class 的剩余票数?也许计算在该日期与该事件对应的 Ticket 表中有多少 Ticket。

我希望我说清楚了,英语不是我的母语。有任何疑问欢迎提问

最佳答案

我认为你的设计应该是这样的:

class Event(models.Model):
name = models.CharField(max_lenght=20)

class Date(models.Model):
event_start = models.DateTimeField()
event_end= models.DateTimeField()
class Ticket_Class(models.Model):
name = models.CharField(max_lenght=20)
price = models.IntegerField()
type= models.CharField(max_lenght=20)

class EventTicketSell(models.Model):
event= models.ForeignKey(Event)
date= models.ForeignKey(Date)
ticket= models.ForeignKey(Ticket_Class)
max_sellable_tickets= models.IntegerField()

这种设计的原因是您可以向 EventTicketSell 类添加一个事件,然后分配日期和票以及最大可售门票。

用于添加门票/日期/事件:

event1= Event(name= "Lion King")
event1.save()
event2= Event(name= "Metallica")
event2.save()

vip_ticket= Ticket_Class(name='VIP', price= 100, type='VIP')
vip_ticket.save()

evening_show= Date(event_start='Date Object', event_end= 'Date Object') # Date Object is like datetime.datetime.now()
evening_show.save()

concert_ticket_sell= EventTicketSell(event=event1, ticket=vip_ticket, date= evening_show, max_sellable_ticket=500)
concert_ticket_sell.save()

movie_ticket_sell= EventTicketSell(event=event2, ticket=vip_ticket, date= evening_show, max_sellable_tickets=500)
movie_ticket_sell.save()

这种设计将保持对象的可重用性和修改的灵 active 。例如,如果您想更改 max_sellable_ticket,则:

movie_ticket_sell= EventTicketSell.objects.filter(event__name='Lion King', date__event_start= datetime.datetime.now(), ticket__type= 'VIP')[0]

movie_ticket_sell.max_sellable_tickets -= form.cleaned_data['ticket_sold'] #for example we get sold count from form

movie_ticket_sell.save()

关于使用 Django 销售事件门票的网站中的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25487082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com