【问题标题】:FieldError at /favourites/ Cannot resolve keyword 'favpost' into field. Choices are: author, author_id/favourites/ 处的 FieldError 无法将关键字“favpost”解析为字段。选项有:作者、author_id
【发布时间】:2021-11-29 11:15:33
【问题描述】:

我在 /en/account/profile/favourites/ 有错误 FieldError 无法将关键字“favpost”解析到字段中。选项有:作者、author_id

这个跨度可以任意深。

它也可以向后工作。虽然可以自定义,但默认情况下,您使用模型的小写名称在查找中引用“反向”关系。

此示例检索所有 Post 对象,这些对象至少有一个用户=request.user 的 favPost

class Post(models.Model):
    title = models.CharField(max_length=250)
    excerpt = models.TextField()

class favPost(models.Model):        post = models.ForeignKey(Post, related_name='postfv', on_delete=models.CASCADE, default=None, blank=True)
    user = models.ForeignKey(User, related_name='userfv', on_delete=models.CASCADE, default=None, blank=True)
    vote = models.BooleanField(default=True)
    publish = models.DateTimeField(auto_now_add=True)
    def __str__(self):
        return self.post


def favourite_list(request):
    new2 = Post.objects.filter( favpost__user=request.user )        
    return render(request, 'accounts/favourites.html', {'new':  new2  } )

【问题讨论】:

  • post ForeignKey 是否在 favPost 行的右侧缩进?

标签: django django-models


【解决方案1】:

由于要发布的ForeignKeyrelated_name=… parameter [Django-doc]related_name='postfv',因此您查询:

from django.contrib.auth.decorators import login_required

@login_required
def favourite_list(request):
    new2 = Post.objects.filter(postfv__user=request.user)
    return render(request, 'accounts/favourites.html', {'new': new2})

您还应该将post ForeignKey 作为字段放在favPost 下,所以:

class FavPost(models.Model):
    post = models.ForeignKey(Post, related_name='postfv', on_delete=models.CASCADE, default=None, blank=True)
    user = models.ForeignKey(User, related_name='userfv', on_delete=models.CASCADE, default=None, blank=True)
    vote = models.BooleanField(default=True)
    publish = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        return str(self.post)

注意:您可以使用 @login_required decorator [Django-doc].

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 2013-10-09
    • 2019-05-26
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多