跨越关系用户的查找

时间:2018-05-03 07:36:22

标签: django django-views

我有模特帖子

class Post(models.Model):
    user = models.ForeignKey(User, related_name="posts",on_delete=models.CASCADE,default=None)
    created_at = models.DateTimeField(auto_now=True)
    ......

首先,我尝试使用以下代码获取当前用户的所有帖子,并且工作正常

def get_queryset(self):
          return models.Post.objects.filter(user__username__iexact=self.kwargs.get("username"))

上述代码的所有工作都符合预期。

但是当我尝试检索具有在特定日期之前创建的帖子的所有用户时。我按照django文档进行了非常清楚并具有此功能。

def get_queryset(self):
         return User.objects.filter(post__created_at__lte='2019-01-01')

但是django似乎只期望用户字段不是另一个模型名称和字段,因为我得到的错误是期望用户字段 错误是:

Cannot resolve keyword 'post' into field. Choices are: date_joined, email, first_name, group, groups, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, password, posts, user, user_groups, user_permissions, username.

有什么想法吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

在您定义的Post模型中

user = models.ForeignKey(User, related_name="posts",on_delete=models.CASCADE,default=None)

您的相关姓名是posts

所以只需更新你的代码:

def get_queryset(self):
    return User.objects.filter(posts__created_at__lte='2019-01-01 00:00:00+05')

2019-01-01 00:00:00+05 +05中是TZ。

这将解决您的问题。

答案 1 :(得分:0)

您指定related_nameposts

在您的错误消息中,Django实际上告诉您有一个名为posts的字段。