Недавно я пробовал свои силы в DRF, и у меня есть эта проблема, которую нужно решить для моего проекта.
У меня есть две модели
class JobsMaster(models.Model):
job_id = models.CharField(max_length=128, unique=True)
job_name = models.CharField(max_length=128)
scheduled_time = models.CharField(max_length=128)
args = models.TextField()
interval = models.CharField(max_length=50)
repeat = models.CharField(max_length=100)
class JobProcessDetails(models.Model):
job_id = models.ForeignKey('JobsMaster')
sequence = models.IntegerField()
step_name = models.CharField(max_length=128)
records = models.IntegerField(null=True,blank=True)
created_by = models.CharField(max_length=155,default='system')
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = (('job_id', 'sequence'),)
Соответствующие сериализаторы
class JobsMasterSerializer(serializers.ModelSerializer):
class Meta:
model = JobsMaster
fields = '__all__'
class JobProcessDetailsSerializer(serializers.ModelSerializer):
class Meta:
model = JobProcessDetails
fields = '__all__'
их наборы представлений
class JobsMasterViewSet(viewsets.ModelViewSet):
queryset = JobsMaster.objects.all()
serializer_class = JobsMasterSerializer
filter_fields = ('job_id',)
class JobProcessDetailsViewSet(viewsets.ModelViewSet):
queryset = JobProcessDetails.objects.all()
serializer_class = JobProcessDetailsSerializer
filter_fields = ('job_id','sequence',)
Я не знаю, правильный ли это способ создания наборов представлений и сериализатора, но у меня это сработало.
Я хочу написать запрос GET из пользовательского интерфейса, чтобы получить данные из JobProcessDetails
, которые также включают данные из связанной таблицы JobsMaster
.
например, данные ответа должны содержать поля ниже
job_id : xxxxx
sequence : xxxx
step_name : 'xxxx'
records : xxxx
created_by : 'xxxxx'
created_on : dd/mm/yyyy
job_id__job_name : 'xxxxx'
job_id__scheduled_time : 'xxxxx'
job_id__args : 'xxxxx'
job_id__interval : 'xxxxx'
job_id__repeat : 'xxxxx'
Есть ли способ настроить что-то, чтобы получить это с помощью одного запроса GET.