【问题标题】:How to dynamically add django objects to a queryset如何动态地将 django 对象添加到查询集中
【发布时间】:2021-04-29 14:44:48
【问题描述】:

这是我的models.py

class Article(models.Model):
     title = models.CharField(max_length=100) #The title of the article

     # This is to count the number of users who have viewed the article
     viewed_user = models.ManyToManyField(User,related_name='viewed_user',blank=True)

我正在尝试在 views.py 中添加逻辑,即当用户访问特定文章时,如果用户不在viewed_user 列表中,则将该用户添加到那里。

这是我在views.py中尝试过的

    article = get_object_or_4040(Article,id=id)
    if user in article.viewed_user.get_queryset():
        print("User has already viewed the article")
    else:
        article.viewed_user.create(user=user) # THrows an error

但是当我尝试、更新、创建、设置、附加......时,我遇到了很多类型的错误。

任何帮助将不胜感激。

【问题讨论】:

  • 如果您包含完整的可重现代码以及您遇到的确切错误,将会更容易。
  • 其他一切正常,只是当用户打开文章时将用户对象添加到viewed_user列表中的部分

标签: django django-models django-views model django-queryset


【解决方案1】:

其实我已经想通了。主要问题是这个错误

禁止直接分配到多对多集合的反面。请改用viewed_user.set()。

所以我所做的是使用添加。例如在上面的views.py中我的问题

 class Article(View):
     def get(self,request,id=None):
         article = get_object_or_404(Article,id=id)
         user = self.request.user
         if user in article.viewed_user.all():
            print('user in viewed_user')
         else:
            article.viewed_user.add(user) #The updated Code

现在对我有用。我希望有一天它会帮助某人。和平

【讨论】:

    猜你喜欢
    • 2019-07-02
    • 2012-11-27
    • 2018-08-11
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2016-02-02
    相关资源
    最近更新 更多