简介:
我有三个模型
user
,
post
,
group
. 用户可以发布帖子,但是每个帖子必须属于一个组。我有400个固定组。用户必须从现有的400个小组中选择他们的职位。用户无法添加、删除、更新
组
的。
此外:
用户可以成为组的成员,当他们单击某个组时。他们看到了那群人的所有帖子。
用户可以跟随展开其他用户。
**我现在拥有的:**当用户登录时。在他的主页上他看到了。他所属的每个小组的所有职位。当所有组的所有帖子都完成时。然后他看到所有跟随他的人的岗位
我想要的:
我想要
按时间安排岗位
例如:如果他跟随的人之一
刚写了篇帖子
然后那篇文章是第一篇。按时间顺序,第二个职位在他所属的一个组中。那篇文章排在第二位。。。你明白了
下面是我的模型
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts')
group = models.ForeignKey(Group, related_name='posts')
title = models.CharField(max_length=250, unique=True)
message = models.TextField()
created_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['-created_at']
class Group(models.Model):
name = models.CharField(max_length=250, unique=True)
members = models.ManyToManyField(User, through='GroupMember')
我的观点.py
class Homepage(TemplateView):
template_name = 'home.html'
def get_context_data(self, **kwargs):
context = super(Homepage, self).get_context_data(**kwargs)
posts_of_people_i_follow = []
posts_from_groups_that_i_member = []
if self.request.user.is_authenticated():
my = self.request.user
for user in my.following.all():
posts_of_people_i_follow += user.posts.all()
posts_of_people_i_follow.save()
for group in my.group_set.all():
posts_from_groups_that_i_member += group.posts.all()
posts_from_groups_that_i_member.save()
context['posts_of_people_I_follow_list'] = posts_of_people_i_follow
context['posts_from_groups_that_i_member'] = posts_from_groups_that_i_member
return context
在我的
模板
我现在有
{% for post in posts_from_groups_that_i_member %}
{{ post.title }}
{{ post.message }}
{% endfor %}
{% for post in posts_of_people_I_follow_list %}
{{ post.title }}
{{ post.message }}
{% endfor %}
选择2:在打破我的头在这一段时间后,我一直在尝试一种不同的方法。但这看起来很贵
在用户配置文件模型中
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
def get_all_posts(self):
my = self.user
all_posts_for_this_user = []
for user in my.following.all():
all_posts_for_this_user += user.posts.all()
all_posts_for_this_user.save()
for group in my.group_set.all():
all_posts_for_this_user += group.posts.all()
all_posts_for_this_user.save()
return all_posts_for_this_user
然后在我的模板中
{% for post in user.profile.get_all_posts %}
{{ post.title }}
{{ post.message }}
{% endfor %}
有人能想出更好的解决办法吗。或者这可以吗