【问题标题】:I am getting Integrity error in django rest framework我在 django rest 框架中遇到完整性错误
【发布时间】:2020-12-23 18:46:48
【问题描述】:

我是 django 的初学者。我想添加一些帖子和 cmets,但出现完整性错误。 如果没有 cmets 模型,它以前可以工作,但不能一起工作。我已经删除了我的数据库并进行了迁移并再次迁移。

发布模型

from django.db import models
from django.conf import settings
# from django.contrib.auth import get_user_model


# User = get_user_model()

# Create your models here.
class Post(models.Model):
    user = models.ForeignKey(
        #to=User,
        to=settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='posts',
        null=True
    )
    content = models.CharField(
        max_length=150,
        blank=False
    )
    created = models.DateTimeField(
        auto_now=True
    )
    liked_by = models.ManyToManyField(
         #to=User,
         to=settings.AUTH_USER_MODEL,
         related_name='liked_posts',
         blank=True
    ) 

后序列化器

 from rest_framework import serializers
from .models import Post
from ..comment.serializers import CommentSerializer


class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        comments = CommentSerializer(source='comments.content')
        fields = [
            'id',
            'user',
            'content',
            'comments',
            'created',
            'liked_by',
        ]

comment.models

from django.db import models
from django.conf import settings
from apps.post.models import Post


# Create your models here.
class Comment(models.Model):
    user = models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='comment', null=True)
    post = models.ForeignKey(to=Post, on_delete=models.SET_NULL, related_name='comment', null=True)
    content = models.CharField(max_length=150)
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'Comment by: {self.user}'

评论序列化器

from rest_framework import serializers
from .models import Comment


class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Comment
        fields = ['id', 'user', 'post', 'content', 'created']

【问题讨论】:

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


    【解决方案1】:

    您需要正确传递PostSerializer Meta 类中的CommentSerializer 字段。

    from rest_framework import serializers
    from .models import Post
    from .comment.serializers import CommentSerializer
    class PostSerializer(serializers.ModelSerializer):
        comments = CommentSerializer(many=True)
        class Meta:
            model = Post
            
            fields = [
                'id',
                'user',
                'content',
                'comments',
                'created',
                'liked_by',
                'comments',
            ]
    

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 2015-01-26
      • 2016-01-10
      • 1970-01-01
      • 2019-10-12
      • 2023-03-25
      • 1970-01-01
      • 2013-03-18
      • 2014-09-16
      相关资源
      最近更新 更多