Django 具有不同型号键的外键列
假设我有4个模型,A,B,C,X A包含A1、A2、…An(类似于B和C) 我在X中有一个对象,比如说X1,它与类别A,B或C中的一个对象有关 我在X的模型中有一列作为类别 如何将其与A、B和C的不同型号相关联 如果这不能用一列来完成,那么实现这一点的最佳方法是什么 很抱歉问了一个基本问题Django 具有不同型号键的外键列,django,django-models,Django,Django Models,假设我有4个模型,A,B,C,X A包含A1、A2、…An(类似于B和C) 我在X中有一个对象,比如说X1,它与类别A,B或C中的一个对象有关 我在X的模型中有一列作为类别 如何将其与A、B和C的不同型号相关联 如果这不能用一列来完成,那么实现这一点的最佳方法是什么 很抱歉问了一个基本问题 提前感谢:)您有两种选择 使用model(我们称之为Base),它将是A、B和C的父模型: class Base(models.Model): # you can put any fields her
提前感谢:)您有两种选择
class Base(models.Model):
# you can put any fields here that are common to A, B and C, but not having any fields here is fine
pass
class A(Base):
# fields for A, models B and C will be similar so I'm skipping them
pass
现在您可以在X模型中创建外键,并在下一步提取专用模型。为了简化特殊模型的提取,可以使用我遇到了通用关系,但发现很难实现。我会有更深的理解,然后再试一次,谢谢!
class X(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')