【问题标题】:django.db.utils.IntegrityError: NOT NULL constraint failed: like modeldjango.db.utils.IntegrityError:NOT NULL 约束失败:像模型
【发布时间】:2022-01-10 12:11:14
【问题描述】:

我收到 django.db.utils.IntegrityError: NOT NULL 约束失败:feed_like.user_id 在我的模型上。我该如何解决它

我的models.py

类喜欢(models.Model):

post = models.ForeignKey(Posts, related_name='likes', on_delete=models.CASCADE)
user = models.ForeignKey(HNUsers, related_name='likes', on_delete=models.CASCADE)
liked = models.BooleanField(default=False, blank=True, null=True)

class Meta:
    verbose_name_plural = "Likes"

我的意见.py

@api_view(['GET', 'POST'])
@permission_classes((permissions.AllowAny,))
@parser_classes([FormParser, MultiPartParser])
def like_post_api(request):
    if request.method == 'POST':
        data = request.data
        print(data)
        serializer = PostLikeSerializer(data=request.data)
        print("print ", serializer)
        post = Posts.objects.get(id=data['post'])
        print(post)
        if serializer.is_valid():
            serializer.save()
            return Response(status=status.HTTP_201_CREATED)

我的 serializer.py

class PostLikeSerializer(serializers.ModelSerializer):
    user = CommentUserSerializer(read_only=True, many=False)
    class Meta:
        model = Like
        fields = (
            'id',
            'user',
            'post',

        )

【问题讨论】:

  • 你能用回溯显示完整的错误信息吗?另外请修正第一个 sn-p 的格式。
  • 您是否尝试在设置用户序列化程序时删除 read_only=True?
  • 是的,我试过了,但如果我删除 read_only=True ,我不会得到与之相关的用户信息
  • 可以添加 POSTed 数据吗?
  • 是的,我可以发布数据

标签: django django-rest-framework django-views


【解决方案1】:
class Like(models.Model):
    user = models.ForeignKey(HNUsers, related_name='likes', null= True, blank=True on_delete=models.CASCADE)
# your other fields

将您的user 字段的null 属性设置为True。这将删除 NOT NULL 约束失败错误。同时在你的 cmd 中运行 python manage.py makemigrationspython manage.py migrate 命令。

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 2020-07-04
    • 2018-12-24
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多