Disons que j'ai deux modèles:
level:
id
file_number
status
level_process:
process_ptr_id
level_id
Je souhaite combiner les deux tableaux ci-dessus pour l'afficher dans une API à l'aide de Django-rest-framework .. Je recherche l'exemple sur Internet et je ne le trouve pas ... en passant, j'utilise python 2.7 , Django 1.10.5 and djangorestframework 3.6.2
serializer.py
class LevelSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.ReadOnlyField()
class Meta:
model = Level
fields = ('__all__')
class LevelProcessSerializer(serializers.ModelSerializer):
level = LevelSerializer(read_only=True)
class Meta:
model = LevelProcess
fields = ('__all__')
views.py
class ViewLevelProcessViewSet(viewsets.ModelViewSet):
processes = LevelProcess.objects.all()
serializer_class = LevelProcessSerializer(processes, many=True)
Essayez ce qui suit. Créez un sérialiseur pour votre modèle Level
:
class LevelSerializer(serializers.ModelSerializer):
class Meta:
model = Level
Ensuite, dans LevelProcessSerializer
, incluez LevelSerializer
comme ceci:
class LevelProcessSerializer(serializers.ModelSerializer):
level = LevelSerializer(read_only=True)
class Meta:
model = LevelProcess
Utilisation dans votre ModelViewset:
class ViewLevelProcessViewSet(viewsets.ModelViewSet):
queryset = LevelProcess.objects.all()
serializer_class = LevelProcessSerializer
De cette façon, votre JSON ressemblera à quelque chose comme ça:
{
"id": 1,
"level": {
"id": 3,
"status": "red"
}
}
J'espère que cela t'aides!
Je suppose que votre modèle ressemble à suit,
class Level(models.Model):
.......
class LevelProcess(models.Model):
level = models.ForeignKey(Level)
Maintenant, marchons pour la requête,
l = Level.objects.filter(id=level_id).first()
lp = l.level_process_set.all()
C'est ce que nous faisons dans Django ORM.