描述Django的多态关系

时间:2017-09-11 22:48:53

标签: django django-orm

告诉我如何描述这种联系: enter image description here

有一个表可以有不同类型的记录(Type1,Type2或Type3)。

models.py

from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType

class General(models.Model):
    field1 = models.CharField(max_length=512, blank=True, null=True)
    field2 = models.CharField(max_length=512, blank=True, null=True)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

    class Meta:
        db_table = 'General'

  class Type1(models.Model):
    name = GenericRelation(Product)
    address = models.CharField(max_length=512, blank=True, null=True)
    number = models.CharField(max_length=256, blank=True, null=True)

    class Meta:
        db_table = 'Type1'

如何建立连接并选择我想要在类型中键入的内容,例如Type2?

1 个答案:

答案 0 :(得分:0)

除了以下行外,这看起来是正确的:

name = GenericRelation(Product)

应该是:

name = GenericRelation(General)

以形成正确的反向通用关系。