django - 如何使用 Django 创建楼层和房间的宿舍管理系统
问题描述
我正在尝试使用 Django 的旅馆管理系统。该系统可以允许用户注册租户并为他们分配特定楼层的房间。
我想在 django-admin 中创建一个 5 层的旅馆,每层有 50 个房间。如何将楼层和房间添加到 models.py 中?我对 Django 的经验不是很好,你的回答真的会帮助我学到很多东西。
解决方案
你可以从类似的东西开始
class Hostel(models.Model):
pass # maybe add `name`, etc?
class Floor(models.Model):
hostel = models.ForeignKey(Hostel, on_delete=models.PROTECT)
floor_number = models.IntegerField()
class Meta:
unique_together = (("hostel", "floor_number"),)
class Room(models.Model):
floor = models.ForeignKey(Floor, on_delete=models.PROTECT)
room_number = models.IntegerField()
# you might add `capacity`, etc. here
class Meta:
unique_together = (
("floor", "room_number"),
("floor__hostel", "room_number"),
)
这些unique_together
条款确保
- 没有宿舍有两层相同的楼层
- 没有楼层有两个房间号相同
- 没有一家旅馆有两个房间号相同的房间(尽管根据您的业务要求,可能不需要)
然后你可能想要一个管理命令或其他脚本来播种这些:
hostel = Hostel.objects.create()
for floor_number in range(1, 6): # Floors from 1 to 5
floor = Floor.objects.create(
hostel=hostel, floor_number=floor_number
)
for room_number_in_floor in range(1, 51): # Rooms from 1 to 50 per floor
# Translate floor 1, room 10 into 110, etc.:
room_number = floor_number * 100 + room_number
room = Room.objects.create(
floor=floor, room_number=room_number
)
你去吧!祝你好运。:)
推荐阅读
- wildfly - 通过远程 WildFly 21 服务器上的 jconsole 打开 JMX
- r - dplyr:如何按列 B 的条件对分组的列 A 求和,并在没有 NA 的情况下变异为列 sum_A
- javascript - 更改 Location 标头时 NodeJs 不重定向
- python - 为什么我的 alpha-beta 搜索的结果取决于访问节点的顺序?
- docker - 使 docker 容器只能从某个 IP 访问
- javascript - 令牌过期时如何使用 react-router-dom 重定向用户?
- sql - 查找产品的最大数量
- javascript - 错误:渲染的钩子比预期的少。这可能是意外提前退货声明造成的?反应
- python - 无法使用 selenium 单击链接按钮会导致错误元素未找到异常
- variables - Ansible无法将变量值分配给另一个变量