如何在Django REST Framework中定义遗留模型之间的自定义关系

时间:2016-10-13 17:47:11

标签: python django django-rest-framework

我正在使用Django REST Framework应用程序中的一些遗留数据库模型:

class Variable(models.Model):
    var_id = models.AutoField(primary_key=True)
    resource_type = models.CharField(max_length=1, blank=True, null=True)
    resource_id = models.BigIntegerField(blank=True, null=True)
    var_name = models.CharField(max_length=500, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'variables'

class Project(models.Model):
    project_id = models.AutoField(primary_key=True)
    name = models.CharField(unique=True, max_length=100, blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'projects'

项目和变量是相关模型,这样当变量的resource_type为' P'时,其resource_id表示它所属的项目的project_id。如果resource_type不是' P,那么该变量属于不同类型的模型。遗憾的是,我无法对这些模型的数据库架构进行重大更改。

有没有办法在这两个模型之间定义自定义关系,以便我可以将它们看作是使用ForeignKey定义变量到Project?或者好像Project与Variable有一个ManyToManyField关系?我最终希望能够创建嵌套的序列化器关系。类似的东西:

class Variable(serializers.ModelSerializer):
    class Meta:
        model = models.Variable
        fields = ('var_id', 'resource_type', 'resource_id', 'var_name')

class ProjectSerializer(serializers.ModelSerializer):
    variables = VariableSerializer(many=True)

    class Meta:
        model = models.Project
        fields = ('project_id', 'name', 'variables')

谢谢!

0 个答案:

没有答案