#python #django #django-models
#питон #джанго #джанго-модели
Вопрос:
Чтобы дать вам представление о моей проблеме, я сначала показываю свой код, а затем свой вопрос.
В models.py:
class Post(models.Model): content = models.CharField(max_length=140) date_created = models.DateTimeField(auto_now_add=True) poster = models.ForeignKey(User, on_delete=models.CASCADE) likes = models.IntegerField(default=0) liked_by = models.ForeignKey( User, on_delete=models.CASCADE, related_name='liked_by', blank=True, null=True) def serialize(self): return { "id": self.id, "poster": self.poster.username, "poster_image_url": self.poster.image_url, "date_created": self.date_created.strftime("%b %d %Y, %I:%M %p"), "content": self.content, "likes": self.likes,}
В views.py:
@csrf_exempt def get_post(request, post_id): post = Post.objects.get(pk=post_id) if request.method == "GET": return JsonResponse(post.serialize()) elif request.method == "PUT": data = json.loads(request.body) if data.get('likes') is not None: if data['likes'] gt; post.likes: post.likes = data['likes'] post.liked_by = request.user else: post.likes = data['likes'] post.liked_by.remove(request.user) post.save() return HttpResponse(status=204)
Мне нужно удалить request.user
из liked_by
столбца в post
объекте. Но эта ошибка возникает:
Ошибка атрибута: объект «Пользователь» не имеет атрибута «удалить»
Как я могу решить эту проблему?
Ответ №1:
Вы можете установить значение поля Нет, что фактически устраняет связь между экземпляром модели post и моделью пользователя.
Вам не нужен request.user, так как отношение много к одному (экземпляр модели post может быть связан только с одним пользователем).
post.liked_by = None post.save()
Комментарии:
1. Спасибо @yagus, это работает