我通过DRF制作了django项目。在此处输入图片说明
在那个窗口中,我单击了帖子,所以它没有用。
追溯
#I almost omitted other codes
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/comments/
Django Version: 1.9.7
Python Version: 3.5.2
Traceback:
Exception Type: IntegrityError at /comments/
Exception Value: null value in column "author_id" violates not-null constraint
DETAIL: Failing row contains (2, comment1, 2016-08-03 13:30:59.536186+00, null, null).
serializers.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
posts = serializers.HyperlinkedRelatedField(many=True, view_name='post-detail', read_only=True)
comments = serializers.HyperlinkedRelatedField(many=True, view_name='comment-detail', read_only=True)
class Meta:
model = User
fields = ('url','id', 'pk', 'username', 'email', 'comments', 'posts', 'author')
class CommentSerializer(serializers.HyperlinkedModelSerializer):
author = serializers.ReadOnlyField(source='author.username')
post = serializers.ReadOnlyField(source='post.title')
highlight = serializers.HyperlinkedIdentityField(view_name='comment-highlight', format='html')
class Meta:
model = Comment
fields = ('url','id', 'pk', 'post', 'author', 'text','highlight')
models.py
class Comment(models.Model):
post = models.ForeignKey('blog.Post', related_name='related_comments')
author = models.ForeignKey(User, related_name='related_commentwriter')
text = models.TextField(max_length=500)
created_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.text
另外,我正在使用django rest auth。
为什么会出现此错误?怎么解决呢?
谢谢阅读。
您无法在author
字段中创建带有null的Comment实例。为了解决这个问题,您可以在创建新评论时添加作者
class CommentSerializer(serializers.HyperlinkedModelSerializer):
...................
def create(self, validated_data):
validated_data['author'] = self.context['request'].user
return super(CommentSerializer, self).create(validated_data)
与post
字段相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句