【发布时间】:2018-10-05 16:00:49
【问题描述】:
我想做一个餐厅的API,我的models.py是这样的:
class Table(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=30, null=False, blank=False)
is_free = models.BooleanField(default=True)
def __str__(self):
return '%s %s %s' % (self.id, self.name, self.is_free)
class Order(models.Model):
order_id = models.AutoField(primary_key=True)
table_id = models.ForeignKey(Table, on_delete=models.CASCADE)
total_price = models.IntegerField()
factor_id = models.IntegerField()
def __str__(self):
return '%s %s %s' % (self.order_id, self.table_id.id, self.total_price)
class OrderDetail(models.Model):
order_detail_id = models.IntegerField(primary_key=True)
order_id = models.ForeignKey(Order, on_delete=models.CASCADE)
food_id = models.ForeignKey(Food, on_delete=models.CASCADE)
amount = models.IntegerField()
price = models.IntegerField()
def __str__(self):
return '%s %s %s' % (self.order_detail_id, self.order_id, self.food_id.name)
当创建一个带有表格的订单时,应该添加一些 OrderDetails。
我想过滤所有针对特定表和最新订单的 OrderDetail 对象(我的意思是所有现在处于活动状态的 OrderDetail 对象)。带有过滤器的客户端请求 URL 包含 table_id 而不是 order_id。如何按拥有它的表过滤 OrderDetail 对象?
每个表一次只能有一个订单,当一个订单使用特定表创建时,
is_free将设置为 False。所以 Order 类的table_id字段应该是models.ForeignKey而不是models.OneToOneField,我是这么认为的! :) 如果有错请告诉我。
提前致谢。
【问题讨论】:
标签: django django-models django-rest-framework django-filter