Django预约系统

时间:2019-02-28 18:28:43

标签: django django-models

例如,我需要为餐馆建立一个基于Web的预订系统。用户可以提前一周预订餐桌。

这是我第一个自己的Web项目,也是第一次使用Django,因此,想法是用户/客户可以选择他们想要在特定时间保留的表,然后将该表显示为该期间的预定。其他用户/客户应该能够看到桌子何时被预订,何时可以免费使用桌子。

我想知道我是否可以就如何按照这些思路做点什么获得最佳建议?

我知道这个问题非常模糊,但是任何建议都将不胜感激! (我正在努力寻找类似的现有项目)

谢谢:)

1 个答案:

答案 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} }视图会为查看特定表的任何人收集并生成适当的信息。

但是,这并不是完全不可能的,这些模型应该可以让您开始着手处理该业务。

相关问题