我是Django的新手,只是想知道更多。 假设我有两个定义如下的模型:
class ModelA(models.Model):
Item1 = models.Charfield()
description = models.Charfield()
class ModelB(models.Model):
ItemTypes = models.CharField(ModelA, on_delete=models.CASCADE)
当尝试引用或使用模型时,您可以像这样使用它们(仍然假设):
something = ModelB.objects.filter(ItemType__Item)
我的问题是在双下划线__
上。
我只是想知道:
后端的代码是什么样子。
是否存在带有三下划线或单个下划线的有效语法?
答案 0 :(得分:0)
我将代码重写为有效的Django模型:
class ModelA(models.Model):
item1 = models.CharField()
description = models.CharField()
class ModelB(models.Model):
item_types = models.ForeignKey(ModelA, on_delete=models.CASCADE)
things = ModelB.objects.filter(item_type__item1="the-item-name")
Q1。后端的代码是什么样的。
A1。产生的SQL查询为:
SELECT b.*
FROM ModelB b, ModelB a
WHERE b.item_types_id = a.id
AND a.item1 = 'the-item-name'
item_types
ForeignKey列在数据库中创建为item_types_id
。如果未指定主键,则所有Django数据库表均包含名为id
的列。
Q2。是否有有效的语法带有三下划线或单个下划线?
A2。没有三下划线。单个下划线在列名中有效。