我正在使用DRf迈出第一步,并且在此问题上遇到了问题。 假设我有一个这样的模型
class Snps(models.Model):
snpid = models.AutoField(db_column='SNPID', primary_key=True)
rsid = models.CharField(unique=True, max_length=20)
chrom = models.CharField(max_length=5)
pos = models.PositiveIntegerField()
class Meta:
managed = False
db_table = 'SNPs'
def __str__(self):
return str(self.snpid)
class SnpsFunctionalelement(models.Model):
snpid = models.ForeignKey(Snps, models.DO_NOTHING, db_column='SNPID', primary_key=True)
elementid = models.ForeignKey(Functionalelement, models.DO_NOTHING, db_column='ElementID')
celllineid = models.ForeignKey(Celllines, models.DO_NOTHING, db_column='CELLLINEID')
filetype = models.CharField(db_column='fileType', max_length=10)
class Meta:
managed = False
db_table = 'SNPs_FunctionalElement'
unique_together = (('snpid', 'elementid', 'celllineid', 'filetype'),)
def __str__(self):
return str(str(self.snpid) + str(self.elementid) + str(self.celllineid) + str(self.filetype))
现在在serializers.py
中,我想从rsid
中获取字段Snps
并将其序列化,并将其他字段替换为snpid
的{{1}}并环顾四周我找到了这个解决方案
SnpsFunctionalElement
但是说class SnpsFunctionalelementSerializer(serializers.ModelSerializer):
rsid = serializers.SerializerMethodField()
def get_rsid(self, obj):
return obj.Snps.rsid
....
无效,我不知道该怎么办
答案 0 :(得分:0)
如果扩展ModelSerializer
类,则不会有任何麻烦。只需指出要使用的型号和哪些字段即可。
class SnpsFunctionalelementSerializer(serializers.ModelSerializer):
class Meta:
model = Snps
fields = ('rsid')