外键数据类型

Foreign Key data type

我的 DJango 项目中 models.py 中有两个 类。

class person(models.Model):-
    field1 = models.AutoField(primary_key=True)
    person_name = models.CharField(max_length=100, null=True, blank=True)

class orders(models.Model):-
    field22 = models.ForeignKey(person, on_delete=models.CASCADE, null=True)

在上面两个模型中观察到,field22是映射到tableperson[=的主键的外键21=].

现在,field22、int(或)str 的数据类型是什么? (或者)会继承主键的数据类型?

作为人table的主键,订单table中的field22将包含整数。 关键是因为它是一个外键,你不能像标准整数一样执行操作。

例如: 在 table 人中你有两行:

场/人

1 / MrX

2 / Y先生

在 table 个订单中

pk(自动)/field22/其他字段

1 / 2 /text2.1

2 /1 / text1.1

3 /1 / text1.2

如果您想查看 MrX 的 table 订单,您必须亲自获得 MrX 的实例 table 并在订单 tables:[=12 中搜索结果=]

#get instance
instancePerson=person.objects.get(person="MrX")
#and then look in orders
search=orders.objects.filter(field22=instancePerson).values_list('otherfield' )
print(search) 

#output:
['text1.1','text1.2']

例如,如果您尝试按字段 22 的值进行搜索:

search=orders.objects.filter(field22=1).values_list('otherfield' )

您将提出一个异常,这将向您解释比预期和收到 1 个实例。 希望它回答了你的问题。