#django
#django
Вопрос:
Я пытаюсь создать систему управления хостелом с использованием Django. Система может позволить пользователю регистрировать арендаторов и назначать им комнаты на определенном этаже.
Я хочу создать хостел в django-admin с 5 этажами, и на каждом этаже по 50 комнат. Как я могу добавить этажи и комнаты в models.py ? Я не настолько хорошо разбираюсь в Django, ваши ответы действительно помогут мне многому научиться.
Ответ №1:
Вы могли бы начать с чего-то вроде
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
)
и вот, пожалуйста! Удачи. 🙂
Комментарии:
1. Большое спасибо. Это действительно полезно. 🙂