我需要建立一个基于网络的预订系统,例如,为一家餐馆。用户最多可以提前一周预订餐 table 。
这是我自己的第一个 web 项目,也是第一次使用 Django,所以,这个想法是用户/客户可以选择他们想要在特定时间预订的 table ,然后在该时间段内显示为已预订。其他用户/客户应该能够看到餐 table 何时被预订并在餐 table 空闲时进行预订。
我想知道我是否可以就如何按照这些方式制作一些东西获得任何建议,最好的方法是什么?
我知道这个问题非常含糊,但任何建议将不胜感激!
(我正在努力寻找类似的现有项目)
谢谢 :)
最佳答案
我理解当您在处理您的第一个此类项目时为数据库想出一个模型是多么令人沮丧。这是一个非常粗略的概念。
一些资源开始是研究什么叫做 Third Normal Form .这就是数据库如何“规范化”它们的信息(即,它们将信息片段分成最小的组成部分以防止损坏并保持它们的离散性)。
Here is a really good, in-depth video series on developing database designs
但是,回到您的问题 - 让我们考虑一下您实际需要在这里跟踪的内容:
一个顾客、一张 table 和一个预订。
客户将拥有自己的详细信息(电子邮件、用户名、密码等)。
一张 table 将有自己的信息(座位数,可能需要预订它的最大和最小人数等)
预订将是指向客户和包含预订日期信息的表的链接。
这将我们引向以下模型:
# 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
的 View 。模型并能够根据特定时间标准查看哪些表有空闲插槽。您必须为此编写一些逻辑。这种系统将要求您在保存之前验证时间以及聚会的人数是否正确(因此
save
上的自定义 Reservation
方法)以及您的 ViewReservationTimes()
view 为正在查看特定表的任何人收集并生成适当的信息。然而,这根本不是不可能的,这些模型应该让您开始处理该业务。
关于 Django 预订系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54932056/