我有模特帖子
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.
有什么想法吗?非常感谢。
答案 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_name
为posts
。
在您的错误消息中,Django实际上告诉您有一个名为posts
的字段。