在 Django Orm 查询中需要帮助

我有 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()

实际上我正在创建一个餐厅管理系统。所以在这里,一家餐馆的桌子与一个或多个服务员相关联。但我需要一个新功能,即表状态。我的意思是,当一个订单与表积极关联时,这意味着该表已被预订。实际上这不是问题,因为我可以通过多种方式做到这一点。


一种方法是我将计算与此表关联的活动订单,如果我发现任何活动订单,我将返回该表已预订。


另一种方法是我将在表中添加一个额外的字段作为标志。这个表的标志存储状态是否已预订我的意思是布尔字段。


但我的问题不是解决方案。我的问题是哪个更好,或者还有其他好的解决方案。请简要解释一下我想知道哪种解决方案更好以及为什么。



智慧大石
浏览 86回答 1
1回答

呼啦一阵风

您也可以在模板中放置可以直接与任何表对象一起使用的@property函数。class Table@propertydef check_table_status(self):    status = 'Not Booked'    if self.order_set.all().exists():        status = 'Booked'    return status
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python