Sql Django:ForeignKey字段中有多种可能的类型

Sql Django:ForeignKey字段中有多种可能的类型,sql,django,django-models,Sql,Django,Django Models,我想对以下关系建模,其中Vehicle owner字段可以是个人或公司。我们在Django怎么做 class Person(models.Model): name = ... other_details = ... class Company(models.Model): name = ... other_details = ... class Vehicle(models.Model): owner = models.ForeignKey(x) #

我想对以下关系建模,其中Vehicle owner字段可以是个人或公司。我们在Django怎么做

class Person(models.Model):
    name = ...
    other_details = ...

class Company(models.Model):
    name = ...
    other_details = ...

class Vehicle(models.Model):
    owner = models.ForeignKey(x) # 'x' could be a Person or Company
使用通用外键 前

保存对象时,需要获取要为其提供通用FK和该模型的对象id的模型的内容类型

from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get_for_model(Company)
object_id = company_object.id
ve = Vehicle()
ve.content_type = content_type
ve.object_id = object_id
ve.save()

希望这对您有所帮助。

您正在寻找内容类型框架。
from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get_for_model(Company)
object_id = company_object.id
ve = Vehicle()
ve.content_type = content_type
ve.object_id = object_id
ve.save()