所以我试图从基于基本模型的* 书签模型中检索我的 Post 对象。但是,似乎总是返回null,我想知道如何检索我的帖子对象?
这是我的书签模型:
class BookmarkBase(models.Model):
class Meta:
abstract = True
user = models.ForeignKey(Profile,on_delete=models.CASCADE, verbose_name="User")
def __str__(self):
return self.user.username
class BookmarkPost(BookmarkBase):
class Meta:
db_table = "bookmark_post"
date = models.DateTimeField(auto_now_add=True)
obj = models.ForeignKey('home.Post',on_delete=models.CASCADE, verbose_name="Post")
在我的views.py
中,我有一个查询:
posts = BookmarkPost.objects.filter(user__id=request.user.id)
但是,尽管我的帖子确实带有书签,但它没有返回任何内容。我该如何实现?
编辑
我已经使用posts.count()
测试了上面的查询,并且返回了3
,这是我登录的用户添加了书签的帖子数,但是在我的模板中,我有:
{% for post in posts %}
{{ post.title }}
{% empty %}
is empty
{% endfor %}
哪个甚至现在都不返回is empty
。
我的views.py:
@login_required
def bookmarks(request):
posts = BookmarkPost.objects.filter(user__id=request.user.id)
context = {
'posts':posts,
}
return render(request,'main/bookmark/bookmarks_user.html', context)
我的个人资料模型:
class Profile(AbstractUser):
bio = models.TextField()
university = models.CharField(max_length=50)
image = models.ImageField(default='defaults/user/default_u_i.png', upload_to=upload_to_uuid('profile_image/profiles/'), blank=True)
def __str__(self):
return self.username
def get_absolute_url(self):
return "{}".format(self.slug)
谢谢!
答案 0 :(得分:0)
因此,我弄清楚了如何访问使用 BookmarkPost 模型中的外键保存的每个 Post 对象的字段。
要使bookmark
对象进入我的视图,我必须这样做:
user = request.user
bookmarked_posts = user.bookmarkpost_set.all()
将提供bookmark
对象(而不是post对象)。然后在我的模板中,我可以简单地做:
{% for bookmark in bookmarked_posts %}
{{ bookmark.obj.title }}
{% endfor %}
谁会给我我用户添加了书签的所有帖子的标题。