Я использую DRF для сопоставления отношения внешнего ключа для предоставления данных из другой таблицы всякий раз, когда я выполняю GET. Следуя примеру документации, я структурировал свой код следующим образом:
ps: я знаю, что есть другие вопросы с этим сомнением, но при анализе большинства из них не удалось решить мою проблему. Извините, если выглядит как дубликат
model.py
class Employee(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
employee_code = models.CharField(max_length=100, primary_key=True)
name = models.CharField(max_length=100, default='')
last_name = models.CharField(max_length=100, default='')
history = HistoricalRecords()
def __str__(self):
return "{}_{}".format(self.name, self.last_name)
class Sectors(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
employees = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name="business")
sector_name = models.CharField(default = 0)
history = HistoricalRecords()
serializer.py
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = ('url','employee_code','name','last_name')
read_only_fields = ('created_at', 'updated_at',)
class SectorsSerializer(serializers.ModelSerializer):
employee = EmployeeSerializer(many=False, read_only=True)
class Meta:
model = Sectors
fields= ("url","employees","sector_name","employee")
read_only_fields = ('created_at', 'updated_at')
views.py
@api_view(['POST','PUT','GET'])
def post_sectors(request):
# Deserialize the information provided in the request
ser = SectorsSerializer(data=request.data)
# Validate the information provided
ser.is_valid(raise_exception=True)
# Save the information in the datawarehouse
ser.save()
return Response(status=status.HTTP_200_OK)
class EmployeeViewSet(viewsets.ModelViewSet):
queryset = Employee.objects.all()
serializer_class = EmployeeSerializer
class SectorsViewSet(viewsets.ModelViewSet):
queryset = Sectors.objects.all()
serializer_class = SectorsSerializer
Я ожидал что-то вроде этого:
{
"url": "http://127.0.0.1:8000/employe/1/",
"employees": 2134,
"sector_name": 23012020,
"employee": "191_A"[
"employee_code":12,
"name": "Jhon",
"last_name":"Spencer"
]
},
Но вот что мне возвращается:
}
"url": "http://127.0.0.1:8000/employe/1/",
"employees": 2134,
"sector_name": 23012020
}