У меня есть следующие модели:
class Users(models.Model):
user_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
firstname = models.CharField(max_length=50)
lastname = models.CharField(max_length=50)
username = models.CharField(max_length=50, null=True, blank=True)
home_page = models.CharField(max_length=100, null=True, blank=True)
user_email = models.EmailField(max_length=70, unique=True)
user_password = models.CharField(max_length=50)
mobile_number = models.CharField(max_length=20, unique=True)
is_active = models.BooleanField(default=True)
class Posts(models.Model):
post_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user_id = models.ForeignKey(Users, on_delete=models.CASCADE)
uri = models.CharField(max_length=45)
title = models.CharField(max_length = 20)
summary = models.CharField(max_length=30)
post_body = models.CharField(max_length=3000)
post_datetime = models.DateTimeField(auto_now_add=True)
votes = models.IntegerField()
location = models.CharField(max_length=200)
, и у меня есть следующие сериализаторы:
class UsersSerializer(serializers.ModelSerializer):
class Meta:
model = models.Users
fields = ('user_id', 'firstname', 'lastname', 'user_email', 'username',
'home_page', 'user_password', 'mobile_number', 'is_active')
class PostsSerializer(serializers.ModelSerializer):
class Meta:
model = models.Posts
fields = ('post_id', 'user_id', 'uri', 'location', 'title', 'summary', 'post_body', 'post_datetime', 'votes')
Этомой код просмотра:
class ListCreatePostsView(generics.ListCreateAPIView):
queryset = Posts.objects.all()
serializer_class = PostsSerializer
def post(self, request, *args, **kwargs):
a_Post = Posts.objects.create(
user_id=request.data["user_id"],
title=request.data["title"],
location=request.data["location"],
summary=request.data["summary"],
post_body=request.data["post_body"],
uri=request.data["uri"],
votes=request.data["votes"]
)
return Response(
data=PostsSerializer(a_Post).data,
status=status.HTTP_201_CREATED
)
У меня есть API, работающий с использованием Django Rest Framework.Тем не менее, когда я пытаюсь добавить новое сообщение в определенный user_id
, я получаю следующую ошибку из представления API:
Cannot assign "'528c2d9e-da2e-4c3d-9a92-eafb98e5d06e'": "Posts.user_id" must be a "Users" instance.
Это проблема с моей реализацией Serializer?user_id
уже указано в качестве внешнего ключа в модели сообщений.
Работающая версия DEMO API находится здесь:
https://thymesis -памяти.herokuapp.com / api / memory / create
django-version: 2.1.3
DRS-version: 3.9.0