微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在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)
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。