首页 > 解决方案 > 如何使用 Django 创建楼层和房间的宿舍管理系统

问题描述

我正在尝试使用 Django 的旅馆管理系统。该系统可以允许用户注册租户并为他们分配特定楼层的房间。
我想在 django-admin 中创建一个 5 层的旅馆,每层有 50 个房间。如何将楼层和房间添加到 models.py 中?我对 Django 的经验不是很好,你的回答真的会帮助我学到很多东西。

标签: 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
        )

你去吧!祝你好运。:)


推荐阅读