【发布时间】:2020-05-21 06:38:28
【问题描述】:
我得到了这样的表结构
class Item(models.Model):
id = models.AutoField(primary_key=True)
class Car(models.Model):
vin_number = models.CharField(max_length=250, null=True, blank=True)
item = models.OneToOneField(Item, on_delete=models.CASCADE)
name = models.CharField(max_length=1000, null=True)
year = models.IntegerField(null=True)
class Yacht(models.Model):
name = models.CharField(max_length=1000, default='')
boat_type = models.CharField(max_length=1000, default='', null=True)
item = models.OneToOneField(Item, on_delete=models.CASCADE)
description = models.TextField(default='')
year = models.IntegerField(null=False, default=0)
所以,Car 和 Yacht 都与 Item 表有关系
如果我在请求中只有项目 ID,那么编写此类查询的正确方法是什么
data = request.POST
item = Car.objects.filter(item_id=data['item_id']).first()
if not item:
item = Yacht.objects.filter(item_id=data['item_id']).first()
有什么办法不使用 if/else 语句?
【问题讨论】:
-
你能提供更多细节吗?
if not item:不工作吗? -
@Hisham___Pak - 为什么
if not item不起作用? -
我在问你有什么问题。
-
@Hisham___Pak - 问题是我需要对汽车和游艇进行 2 次查询。如果我有更多与
Item有OneToOne关系的表?