我正在使用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')
谢谢!