为了账号安全,请及时绑定邮箱和手机立即绑定

在 Django Orm 查询中需要帮助

在 Django Orm 查询中需要帮助

PHP
幕布斯6054654 2023-09-15 17:14:12
我有 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()实际上我正在创建一个餐厅管理系统。因此,这里的餐厅有与一个或多个服务员相关的桌子。但我需要一个新功能,即表状态。我的意思是,当订单与餐桌主动关联时,意味着该餐桌已被预订。实际上这不是问题,因为我可以通过多种方式做到这一点。一种方法是我将计算与此表关联的活动订单,如果我发现任何活动订单,我将返回该表已预订。另一种方法是我将在表中添加一个额外的字段,该字段是一个标志。桌子的标志存储状态是否已预订,我的意思是布尔字段。但我的问题不是解决方案。我的问题是哪个更好或者还有其他好的解决方案。请简要解释一下我想知道哪种解决方案更好以及为什么。
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

您可以在模板中放置可以直接与任何表对象一起使用的@property函数。class Table


@property

def check_table_status(self):

    status = 'Not Booked'

    if self.order_set.all().exists():

        status = 'Booked'

    return status


查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 63 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信