django - DRF 在序列化程序中使用另一个模型字段
问题描述
我正在使用 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
并SnpsFunctionalElement
环顾四周我找到了这个解决方案
class SnpsFunctionalelementSerializer(serializers.ModelSerializer):
rsid = serializers.SerializerMethodField()
def get_rsid(self, obj):
return obj.Snps.rsid
....
但是这样说是行不通的,'SnpsFunctionalelement' object has no attribute 'Snps'
我不明白该怎么做
解决方案
如果ModelSerializer
课程延长,则无需任何麻烦。只需指明要使用的模型和字段。
class SnpsFunctionalelementSerializer(serializers.ModelSerializer):
class Meta:
model = Snps
fields = ('rsid')
推荐阅读
- sql-server - 如何转义列别名中的方括号?
- javascript - Kendo UI TreeView Checkbox 提交按钮
- python - 在python中根据条件索引添加子列表元素
- scala - 方法作为参数,枚举值要使其类型化
- python - 如何用python在windows中打开文件?
- mysql - 在mysql存储过程中获取持续时间并在表中更新
- javascript - 我总是想知道类似 [, thisArg] 的东西的含义
- excel - Excel - 根据动态条件填充单元格
- c++ - c ++使用getline和FILE而不是ifstream读取文件
- vb.net - request.getResponse() 没有从 URL 返回实际源