Я использую django и rest-framework для разработки сайта. У меня есть пользовательское приложение, в котором модели показаны ниже:
class User(AbstractUser):
pass
class Comment(models.Model):
comment_text = models.TextField()
author = models.ForeignKey(settings.AUTH_USER_MODEL,default=DefaultUser,on_delete=models.SET_DEFAULT,related_name='author')
# DefaultUser is similar to AnonymousUser in django.contrib.aut.models
date = models.DateTimeField(default=now)
class User_Comment(Comment):
on_user = models.ForeignKey(User,on_delete=models.CASCADE,related_name='on_user',default=DefaultUser)
class User_Comment(Comment):
on_user = models.ForeignKey(User,on_delete=models.CASCADE,related_name='on_user',default=DefaultUser)
так что это в основном система комментариев, где пользователь может комментировать другого пользователя.
Я использовал сериализатор остального фреймворка для публикации комментариев:
class User_CommentSerilizer(serializers.ModelSerializer):
comment = User_Comment
class Meta:
model = User_Comment
fields = ('comment_text','on_user')
# extra_kwargs = {'password': {'write-only': True}}
def create(self, validated_data):
comment = User_Comment(
author= User.objects.filter(username=self.context['request'].user)[0],
on_user= User.objects.filter(username=validated_data["on_user"])[0],
validated=False,
comment_text= validated_data["comment_text"]
)
comment.save()
return comment
и затем с помощью UserCommentViewSet в views.py:
class User_CommentViewSet(viewsets.ViewSet):
serializer_class = User_CommentSerilizer
queryset = User_Comment.objects.all()
и, наконец, в файле urls я зарегистрировал вид:
router = DefaultRouter()
router.register('profile' , views.UserViewSet)
router.register('comment' , views.User_CommentViewSet)
router.register('login' ,views.LoginViewSet, base_name='login')
urlpatterns = [
path('users/', include(router.urls)),
]
профиль и логин роутеры работают нормально. однако маршрутизатор комментариев вообще не отображается (и возвращает 404), не вызывая других ошибок. это как роутер не зарегистрирован.
Я не могу понять, в чем проблема, хотя я узнал, что это как-то связано с частью набора запросов. Я был бы очень признателен, если бы кто-нибудь мог понять это.