Django 跨用户关系的查找
我有标杆Django 跨用户关系的查找,django,django-views,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):
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.
有什么想法吗?非常感谢。您将
相关的\u名称指定为posts
在您的错误消息中,Django实际上告诉您,在您定义的Post
模型中有一个名为posts
的字段
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中的2019-01-01 00:00+05是TZ
这将解决您的问题。这不起作用。.这是我尝试的第一件事。.谢谢,但结果是什么?未找到页面(404)…未找到与查询匹配的用户…尽管我有与我的条件匹配的用户检查您的“2019-01-01”格式。可能是数据库中的差异格式不同您在模型中定义了DateTimeField
,而您只是在查询中传递date
。