Python 外键数据类型
在DJango项目中,我在models.py中有两个类Python 外键数据类型,python,django,foreign-keys,primary-key,rdms,Python,Django,Foreign Keys,Primary Key,Rdms,在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, o
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是映射到表person主键的外键
现在,field22的数据类型是什么,int(或)str?(或)它将继承主键的数据类型?作为person表的主键,orders表中的field22将包含整数。 该点大于,因为它是外键,所以不能作为标准整数执行操作 例如: 在table person中,您有两行: 现场/人员 1/MrX 2/MrY 按餐桌顺序 主键(自动)/字段22/其他字段 1/2/text2.1 2/1/text1.1 3/1/text1.2 如果您想在表orders中查找MrX,则必须在orders表中获得MrX的实例和搜索结果:
#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']
例如,如果您尝试按field22的值进行搜索:
search=orders.objects.filter(field22=1).values_list('otherfield' )
您将引发一个异常,该异常将解释您比预期的实例和收到的实例多1。
希望它能回答你的问题 外键必须具有相同的数据类型。