Я хочу сделать 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 для конкретной таблицы и для последнего Order (я имею в виду все объекты OrderDetail, которые сейчас активны). URL запроса клиента с фильтром содержит table_id
, а не order_id
. Как я могу отфильтровать объекты OrderDetail по таблице, в которой они есть?
Каждая таблица может иметь только один ордер за один раз. Когда ордер создается с определенной таблицей, is_free
будет установлен в False. Поэтому поле table_id
класса Order должно быть models.ForeignKey
, а не models.OneToOneField
, я так думаю! :) Если это не так, скажите, пожалуйста.
Заранее спасибо.