0
3つのリンクされたモデルからのデータを含むDjango Rest FrameworkからHttpResponseを返そうとしています。モデルは以下のdjango DRF:シリアライザで関連するモデルフィールドを取得する方法
class ErrorDb(models.Model):
error_id = models.AutoField(primary_key=True)
error_msg = models.CharField(max_length=500)
user_name = models.CharField(max_length=45)
class Meta:
#managed = False
db_table = 'error_db'
class ErrordbKey(models.Model):
key_id = models.AutoField(primary_key=True)
parent_areaid = models.IntegerField(blank=True, null=True)
class Meta:
#managed = False
db_table = 'errordb_key'
class ErrordbMapping(models.Model):
table_id = models.AutoField(primary_key=True)
key = models.ForeignKey(ErrordbKey)
error = models.ForeignKey(ErrorDb)
class Meta:
#managed = False
db_table = 'errordb_mapping'
unique_together = (('key', 'error'),)
あるviews.pyです:
def area_detail(request, area_id):
obj_ErrordbKey = ErrordbKey.objects.filter(parent_areaid=area_id)
#objects to get specific rows where area_id exists
if request.method == 'GET':
obj_ErrordbMapping = ErrordbMapping.objects.filter(key__in=obj_ErrordbKey)
serializer = TaskSerializer(obj_ErrordbMapping, many=True)
return Response(serializer.data)
私は直列化メソッド以下、foeignキーリレーションシップを参照してください。 serializers.py試してみました:
class ErrorDbSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ErrorDb
fields = ('error_msg','user_name')
class ErrordbKeySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ErrordbKey
fields = ('area', 'filename')
class TaskSerializer(serializers.HyperlinkedModelSerializer):
# errorDbdata = ErrorDbSerializer()
# errordbKeydata = ErrordbKeySerializer()
error = ErrorDbSerializer(source='error')
key = ErrordbKeySerializer(source='key')
class Meta:
model = ErrordbMapping
fields = ('key', 'error')
あなたのコードを試しましたが、まだo/pを取得できませんでした。空のリスト –
@ vm-power何か例外がありますか? –
IはDjangoのシェルから有効なデータオブジェクトを見ることができます:>>> obj_ErrordbKey = ErrordbKey.objects.filter(parent_areaid = 3) >>> obj_ErrordbMapping = ErrordbMapping.objects.filter(key__in = obj_ErrordbKey) >>> obj_ErrordbMapping [、、] –