Django 通用模型,可由多个其他模型使用,但一次只能使用一个

Django 通用模型,可由多个其他模型使用,但一次只能使用一个,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,我试图建立一个描述模型,可以被几个不同的模型使用。 但是描述模型一次只能有一个 假设我有这两个模型 class Account(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) birthdate = models.DateField() phoneNumber = models.CharField(max_length=20) c

我试图建立一个描述模型,可以被几个不同的模型使用。 但是描述模型一次只能有一个

假设我有这两个模型

class Account(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    birthdate = models.DateField()
    phoneNumber = models.CharField(max_length=20)

class CompanyProfile(models.Model):
    companyName = models.CharField(max_length=50)
    VAT = models.CharField(max_length=35, unique=True)
我希望两者都有多个描述。但描述对象只能链接到一个模型。我找到的一个(肮脏的)解决办法就是这个

class Description(models.Model):
    title = models.CharField(max_length=100)
    text = models.CharField(max_length=2500, null=True, blank=True)
    account = models.ForeignKey(Account, on_delete=models.CASCADE, null=True, blank=True)
    company = models.ForeignKey(CompanyProfile, on_delete=models.CASCADE, null=True, blank=True)
在普通python中,您只需要有一个描述列表。但在django,这是不可能的。我曾考虑过使用泛型关系,但效果似乎有所不同。 我为什么要这样做? 因为我希望通过使用继承来扩展描述,并且我希望能够对多个类使用所有这些类型的“描述”。

Django得到了

但我觉得实现这一点的更好方法是在每个模型映射到描述模型中添加OneToOne字段

description= models.ForeignKey(Description, on_delete=models.SET_NULL, null=True, blank=True)

你的意思是想让
账户
公司档案
都有多个描述吗?很抱歉反应太晚,除了这个项目之外,我们一直忙于学校的工作。是的,他们需要能够有多个描述。例如,一个“空缺”模型也需要能够有多个描述。这会有点效果,但我需要能够有多个描述。然后使用通用ForeignKey