【发布时间】:2018-12-17 04:01:16
【问题描述】:
我有以下型号:
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
)
我有一个使用 Django Rest Framework 运行的 API。但是,当我尝试将新帖子添加到特定的 user_id 时,我从 API 视图中收到以下错误:
Cannot assign "'528c2d9e-da2e-4c3d-9a92-eafb98e5d06e'": "Posts.user_id" must be a "Users" instance.
我的序列化器实现有问题吗? user_id 已在 Posts 模型中声明为外键。
DEMO API 的运行版本在这里:
https://thymesis-memories.herokuapp.com/api/memories/create
django-version: 2.1.3
DRS-version: 3.9.0
【问题讨论】:
-
您的查看代码在哪里?
-
让我尽快添加它@RedCricket
-
user_id = models.ForeignKey(Users, on_delete=models.CASCADE)这个属性将是一个User对象,我想最好只将它重命名为user。 Posts().user_id 将给 Users()。为什么型号名称是复数?
标签: django python-3.x django-models django-serializer