0
我試圖在巢上獲得反向關係。django rest框架 - 如何在嵌套時表示反向關係?
這裏是我的models.py(相關型號)
class Tblusergroups(models.Model):
groupid = models.AutoField(db_column='groupId', primary_key=True) # Field name made lowercase.
shortname = models.CharField(db_column='shortName', max_length=255) # Field name made lowercase.
groupname = models.CharField(db_column='groupName', max_length=255, blank=True) # Field name made lowercase.
departmentname = models.CharField(db_column='departmentName', max_length=255, blank=True) # Field name made lowercase.
subdepartmentname = models.CharField(db_column='subDepartmentName', max_length=255, blank=True) # Field name made lowercase.
subdepartmentshortname = models.CharField(db_column='subDepartmentShortName', max_length=255, blank=True) # Field name made lowercase.
divisionname = models.CharField(db_column='divisionName', max_length=255, blank=True) # Field name made lowercase.
divisionshortname = models.CharField(db_column='divisionShortName', max_length=255, blank=True) # Field name made lowercase.
subdivisionname = models.CharField(db_column='subDivisionName', max_length=255, blank=True) # Field name made lowercase.
seniormanager = models.CharField(db_column='seniorManager', max_length=255, blank=True) # Field name made lowercase.
manager = models.CharField(max_length=255, blank=True)
supportcontactemailaddress = models.CharField(db_column='supportContactEmailAddress', max_length=255, blank=True) # Field name made lowercase.
comments = models.TextField(blank=True)
isactive = models.NullBooleanField(db_column='isActive') # Field name made lowercase.
recordownerid = models.IntegerField(db_column='recordOwnerId', blank=True, null=True) # Field name made lowercase.
lastmodifieddate = models.DateTimeField(db_column='lastModifiedDate', blank=True, null=True) # Field name made lowercase.
lastmodifiedby = models.CharField(db_column='lastModifiedBy', max_length=255, blank=True) # Field name made lowercase.
# upsize_ts = models.TextField(blank=True) # This field type is a guess.
class Meta:
managed = False
db_table = 'tblUserGroups'
class Tblbmcgroups(models.Model):
bmcid = models.AutoField(db_column='bmcId', primary_key=True)
groupid = models.ForeignKey(Tblusergroups, db_column='groupId', related_name='bmc_code', to_field='groupid')
bmccode = models.CharField(db_column='bmcCode', max_length=255)
class Meta:
managed = False
db_table = 'tblBmcGroups'
class Tblservers(models.Model):
serverid = models.IntegerField(db_column='serverId', primary_key=True) # Field name made lowercase.
servername = models.CharField(db_column='serverName', max_length=255) # Field name made lowercase.
environmentid = models.ForeignKey(Tbldomaincodes, db_column='environmentId', related_name='+', to_field='id') # Field name made lowercase.
isvirtual = models.NullBooleanField(db_column='isVirtual') # Field name made lowercase.
locationid = models.ForeignKey(Tbldomaincodes, db_column='locationId', related_name='+', to_field='id') # Field name made lowercase.
managedbyid = models.ForeignKey(Tbldomaincodes, db_column='managedById', related_name='+', to_field='id') # Field name made lowercase.
operatingsystem = models.CharField(db_column='operatingSystem', max_length=255, blank=True) # Field name made lowercase.
model = models.CharField(max_length=255, blank=True)
assettag = models.CharField(db_column='assetTag', max_length=255, blank=True) # Field name made lowercase.
inceptiondate = models.DateTimeField(db_column='inceptionDate', blank=True, null=True) # Field name made lowercase.
comments = models.TextField(blank=True)
assetstatusid = models.ForeignKey(Tbldomaincodes, db_column='assetStatusId', related_name='+', to_field='id') # Field name made lowercase.
recordownerid = models.ForeignKey(Tblusergroups, db_column='recordOwnerId') # Field name made lowercase.
lastmodifieddate = models.DateTimeField(db_column='lastModifiedDate', blank=True, null=True) # Field name made lowercase.
lastmodifiedby = models.CharField(db_column='lastModifiedBy', max_length=255, blank=True) # Field name made lowercase.
# upsize_ts = models.TextField(blank=True) # This field type is a guess.
class Meta:
managed = False
db_table = 'tblServers'
我在做一個非常簡單的serializers.py
class TblusergroupsSerializer(serializers.ModelSerializer):
class Meta:
model = Tblusergroups
fields = ('groupid', 'shortname', 'groupname', 'departmentname', 'subdepartmentname', 'subdepartmentshortname',
'divisionname', 'divisionshortname', 'seniormanager', 'manager', 'supportcontactemailaddress',
'comments', 'isactive', 'recordownerid', 'lastmodifieddate', 'lastmodifiedby', 'bmccode')
class TblserversSerializer(serializers.ModelSerializer):
class Meta:
model = Tblservers
fields = ('serverid', 'servername', 'isvirtual', 'locationid', 'managedbyid', 'operatingsystem', 'model',
'assettag', 'inceptiondate', 'comments', 'assetstatusid', 'recordownerid', 'lastmodifieddate',
'lastmodifiedby')
depth = 2
class TblapplicationsSerializer(serializers.ModelSerializer):
class Meta:
model = Tblapplications
depth = 1
如果我只使用了TblusergroupsSerializer
我可以看到的反向關係在bmccode
問題是當我試圖讓它代表當使用TblserversSerializer
我猜測序列化它可能是asier只需要一個def get_bmccode
?