在Django中为两个不同的类的选项设置外键

问题描述

|| 因此,基本上,我想知道是否有可能在Django中制作一个ForiegnKey潜在地指向两个对象的选择。实际上不是。 例如:
class Car(models.Model):
    pass

class Truck(models.Model):
    pass

class NumberPlate(models.Model):
    vehicle = models.ForeignKey(Car or Truck)
我知道在此示例中,可以采用多种更好的方式来格式化汽车与卡车之间的区别,但是在我的实际代码中,似乎没有其他选择可以使事情变得更复杂。我想我可以为汽车和卡车创建一个“号牌”,但这会给我的代码增加不必要的混乱。 有没有一种方法可以在两种指向的对象之间进行选择,或者有一种我可以解决方法? 谢谢!     

解决方法

        最好使用通用关系,然后将NumberPlate附加到任何内容类型,例如
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey(\'content_type\',\'object_id\')
    ,        您可以使用模型继承来实现所需的功能:
class Car(models.Model):
    pass

class Truck(Car):
    pass

class NumberPlate(models.Model):
    vehicle = models.ForeignKey(Car)