Проблема с внешним ключом в моей модели отдела
Я получаю следующую ошибку Cannot assign "u'167'": "Department.organization" должен быть экземпляром "Organization".
Я перепробовал все способы отправки идентификатора организации, но безуспешно.
Метод запроса: POST
URL запроса: http://127.0.0.1:8081/profiles/api/createorganisation/.
Версия Django: 1.8.14
Тип исключения: ValueError
Значение исключения:
Невозможно присвоить значение "u'167'": "Department.organization" должен быть экземпляром "Organization".
Exception Location: /usr/local/lib/python2.7/site-packages/django/db/models/fields/related.py in set, line 639
Это модель
class Department(models.Model):
"""
Make department codes selectable and stuff
"""
organization = models.ForeignKey(Organization, related_name="departments")
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True, editable=False)
users = models.ManyToManyField("CustomUser", related_name="departments", blank=True)
enter code here
Класс сериализатора
class DepartmentCreateSerializer(serializers.ModelSerializer):
organization = serializers.CharField()
name = serializers.CharField()
slug = serializers.CharField()
class Meta:
model = Department
fields = ('pk','organization','name','slug')
Это мой код
org = Organization.objects.get(slug="tata5").id
department = {
"organization":org,
"name" : "finance1",
"slug" : "finance1" ,
}
logging.warning(department)
instance = DepartmentCreateSerializer(data=department)
instance.organization = org
instance.is_valid(raise_exception=True)
instance.save()
# createDepartment.is_valid()
# createDepartment.save()
return Response(instance, status=status.HTTP_200_OK)
Вы используете serializers.CharField(), поэтому он пытается установить department.organization = 'id' вместо того, чтобы это был реальный экземпляр Organization, вместо него следует использовать serializers.PrimaryKeyRelatedField, который затем сериализует входной ID в экземпляр Organization.