Это первый раз, когда я использую графен, не очень хорошо разбираюсь в нем.Так что в основном делаю блог, где пользователь может ставить лайки, комментарии и добавлять посты в свои любимые, а также подписываться друг на друга
Я создал отдельную модель для всех действий пользователя
class user_actions(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
liked_post = models.ForeignKey(Post, related_name='post_likes',
on_delete=models.CASCADE)
liked_comments = models.ForeignKey(Comment,
related_name='comment_likes', on_delete=models.CASCADE)
fav = models.ForeignKey(Post, related_name='fav_post',
on_delete=models.CASCADE)
target = models.ForeignKey(User, related_name='followers',
on_delete=models.CASCADE, null=True, blank = True)
follower = models.ForeignKey(User, related_name='targets',
on_delete=models.CASCADE, null = True, blank = True)
def __str__(self):
return self.user.username
Итак, я сделал мутацию для всех действий, я пытаюсь следовать принципу СУХОЙ Принсипи и суммировать их все в одномВозможно, я что-то здесь не так делаю, Новый кодер старается изо всех сил: D
class UactionInput(InputObjectType):
liked_post_id = graphene.Int()
fav_post_id = graphene.Int()
comment_id = graphene.Int()
target_id = graphene.Int()
follower_id = graphene.Int()
class CreateUaction(graphene.Mutation):
user = graphene.Field(UactionType)
class Arguments:
input = UactionInput()
def mutate(self, info, input):
user = info.context.user
if not user.is_authenticated:
return CreateUaction(errors=json.dumps('Please Login '))
if input.liked_post_id:
post = Post.objects.get(id=input.liked_post_id)
user_action = user_actions.objects.create(
liked_post = post,
user = user
)
return CreateUaction( user = user )
if input.liked_comment_id:
comment = Comment.objects.get(id=input.liked_comment_id)
user_action = user_actions.objects.create(
liked_comment = comment,
user = user
)
return CreateUaction(user = user )
if input.fav_post_id:
post = Post.objects.get(id=input.fav_post_id)
user_action = user_actions.objects.create(
fav = post,
user = user
)
return CreateUaction(user = user )
if input.target_id:
user = User.objects.get(id=input.target_id)
user_action = user_actions.objects.create(
target = user,
user = user
)
return CreateUaction(user = user )
if input.follower_id:
user = User.objects.get(id=input.follower_id)
user_action = user_actions.objects.create(
follower= user,
user = user
)
return CreateUaction(user = user )
Извините за отступ в вопросе, но в моем коде все нормально.
Мутация createUactionдает мне эту ошибку
"message": "Field \"createUaction\" of type \"CreateUaction\" must have a sub selection.",
Любая помощь приветствуется.Дайте мне знать, если мне тоже понадобится опубликовать распознаватели.