Django Test: Неверный тип. Ожидалось значение pk, получено str
У меня есть простая модель, имеющая внешний ключ:
class Job(models.Model):
resource = models.ForeignKey(Resource, on_delete=models.RESTRICT, related_name="resource_jobs")
required_resource = models.FloatField(default=0)
Вот набор представлений:
class JobViewSet(ModelViewSet):
queryset = Job.objects.all()
serializer_class = JobSerializer
Я пишу тест для создания этого объекта Job следующим образом.
self.detail_url: str = "factory:jobs-detail"
self.resource = Resource.objects.create(**self.resource_data)
self.job_data = {
"resource": self.resource,
"required_resource": 20,
}
def test_create(self) -> None:
response: Response = self.client.post(
self.list_url, data=self.job_data
)
print(response.data)
self.assertEqual(response.status_code, 201)
После выполнения теста я получаю ошибку: {'resource': [ErrorDetail(string='Неверный тип. Ожидалось значение pk, получено str.', code='incorrect_type')]} Как мне передать этот объект в этот словарь.
Спасибо за любую помощь.
Вы никогда не передаете объекты модели через сериализатор: сериализатор сериализует поток символов, таких как JSON, XML и т.д.
Вы должны передать первичный ключ элемента, так:
self.job_data = {
'resource': self.resource,pk,
'required_resource': 20,
}