例如,我需要为餐馆建立一个基于Web的预订系统。用户可以提前一周预订餐桌。
这是我第一个自己的Web项目,也是第一次使用Django,因此,想法是用户/客户可以选择他们想要在特定时间保留的表,然后将该表显示为该期间的预定。其他用户/客户应该能够看到桌子何时被预订,何时可以免费使用桌子。
我想知道我是否可以就如何按照这些思路做点什么获得最佳建议?
我知道这个问题非常模糊,但是任何建议都将不胜感激! (我正在努力寻找类似的现有项目)
谢谢:)
答案 0 :(得分:1)
我知道当您在进行第一个此类项目时,为数据库提供模型是多么令人沮丧。把头缠起来是一个很粗糙的概念。
首先要研究的资源是Third Normal Form。这就是数据库“标准化”其信息的方式(也就是说,它们将信息分成最小的组成部分,以防止损坏并保持离散)。
Here is a really good, in-depth video series on developing database designs
但是,回到您的问题-让我们考虑一下您实际需要在此处跟踪的内容:
一个客户,一张桌子和一个预订。
客户将拥有自己的详细信息(电子邮件,用户名,密码等)。
一张桌子将有自己的信息(座位数,可能需要保留的最大和最小人数,等等)
预订是指向客户和表格的链接,其中包含有关预订日期的信息。
这导致我们得到以下模型:
# models.py
Class Customer(models.Model):
email = models.EmailField()
# And whatever other custom fields here; maybe make a ForeignKey link to User? Whatever.
Class Table(models.Model):
seats = models.IntegerField()
min_people = models.IntegerField()
max_people = models.IntegerField()
Class Reservation(models.Model):
table = models.ForeignKey('Table', on_delete=Models.CASCADE)
party = models.ForeignKey('Customer', on_delete=Models.CASCADE)
spot = models.DateField()
# Make sure you don't use 'time' for this field, as that will cause a headache later on.
这样,其他客户将能够使用将查询Reservation
模型的视图,并能够根据某些时间标准查看哪些表具有可用的插槽。您必须为此编写一些逻辑。
这种系统将要求您在保存之前验证时间以及该方是否有正确的人数(因此save
上使用了自定义Reservation
方法),并且您的{{1} }视图会为查看特定表的任何人收集并生成适当的信息。
但是,这并不是完全不可能的,这些模型应该可以让您开始着手处理该业务。