我正在创建评论。每个评论都可以有答复,但答复不能有答复。我尝试在序列化程序和视图级别执行此操作,但是没有任何效果。
型号:
class Comment(models.Model):
reply_to = models.ForeignKey('self', blank=True, null=True, on_delete=models.CASCADE, related_name='replies')
序列化器:
class CommentSerializer(serializers.ModelSerializer):
episode = serializers.PrimaryKeyRelatedField(read_only=True)
user = serializers.StringRelatedField()
class Meta:
model = Comment
fields = '__all__'
def validate(self, data):
if data['reply_to']:
comment = data['reply_to']
if comment.reply_to:
raise serializers.ValidationError('Нельзя отвечать на ответ')
return data
视图集:
class CommentViewSet(viewsets.ModelViewSet):
serializer_class = CommentSerializer
def perform_create(self, serializer):
try:
episode = Episode.objects.get(id=self.kwargs.get('episode_id'))
except Episode.DoesNotExist:
raise NotFound
serializer.save(episode=episode, user=self.request.user)