У меня есть 3 модели, и они следующие:
class Table(models.Model):
waiter = models.ForeignKey(get_user_model(), on_delete=models.CASCADE,
related_name='restaurant_table')
table_no = models.IntegerField()
objects = TableManager()
class Order(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
food = models.ManyToManyField(OrderFood, related_name='ordered_food')
order_status = models.ForeignKey(OrderStatus, on_delete=models.CASCADE)
table = models.ForeignKey(Table, on_delete=models.CASCADE)
datetime = models.DateTimeField(default=now)
class OrderStatus(models.Model):
CHOOSE = (
('Received', 'Received'),
('Cooking', 'Cooking'),
('WaiterHand', 'In Waiter Hand'),
('Delivered', 'Delivered'),
('Paid', 'Payment Completed'),
('Rejected', 'Rejected')
)
status = models.CharField(max_length=30, null=False, blank=False, choices=CHOOSE)
created_at = models.DateTimeField(auto_now=True)
updated_at = models.DateTimeField()
На самом деле я создаю систему управления рестораном. Итак, здесь в ресторане есть столики, связанные с официантами или более. Но мне нужна новая функция - статус таблицы. Я имею в виду, когда заказ активно связан со столом, это означает, что стол забронирован. На самом деле это не проблема, так как я могу сделать это разными способами.
Один из способов - я буду подсчитывать активный порядок, связанный с этой таблицей, и если я найду какой-либо активный порядок, я верну, что стол забронирован.
Другой способ: я добавлю дополнительное поле с таблицей, которое является флагом. Этот статус хранилища флагов таблиц зарезервирован или нет, я имею в виду логическое поле.
Но мой вопрос не является решением. У меня вопрос, какой из них лучше или есть другие хорошие решения. Кратко объясните, пожалуйста, я хочу знать, какое решение лучше и почему.