对于一个宠物项目,我试图显示按创建日期排序的帖子和图片。 现在,我可以按顺序显示它们,但可以分别显示它们(例如按顺序显示第一篇文章,然后按顺序显示图片)。
我想根据创建日期(无论是帖子还是图片)在墙上展示它们。
Models.py
class AddStatus(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE )
status = models.TextField()
date = models.DateTimeField(default=datetime.now)
class ImageLib(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE )
picture = models.ImageField()
date = models.DateTimeField(default=datetime.now)
Views.py
class ProfilePage(ListView):
model = models.UserCreation
context_object_name = 'profile'
def get_context_data(self, *args, **kwargs):
context = super(ProfilePage, self).get_context_data(*args,
**kwargs)
user =self.request.user
try:
context['data'] = ProfileData.objects.get( user=user)
context['add'] = AddStatus.objects.filter(user=user).order_by('-date')
context['uploadpic'] = ImageLib.objects.filter(user=user).order_by('-date')
except ProfileData.DoesNotExist:
context['data']= None
context['add']=None
context['uploadpic'] = None
return context
模板
{% for items in add %}
<h6 class="display-5" style="font-weight:1px"><i class="fas fa-plus-square"></i> <strong class="capitalize">{{items.user.usercreation.fname}} {{items.user.usercreation.lname}}</strong><span style="font-size:16px; font-weight:1px"> wrote "{{items.status}}"</span>
<small style="font-size:0.7rem"> {{items.date.date}} at {{items.date.time}}</small><a style="float:right" href="{% url 'usercreation:deletestatus' items.pk %}"><i class="fas fa-trash"></i></a></h6>
<hr>
{% endfor %}
{% for pics in uploadpic %}
<h6 class="display-5" style="font-weight:1px"><i class="fas fa-plus-square"></i> <strong class="capitalize">{{pics.user.usercreation.fname}} {{pics.user.usercreation.lname}}</strong><span style="font-size:16px; font-weight:1px"> uploaded a picture</span>
<small style="font-size:0.7rem"> {{pics.date.date}} at {{pics.date.time}}</small><a style="float:right" href="{% url 'usercreation:deletepic' pics.pk %}"><i class="fas fa-trash"></i></a></h6>
<img style="width:300px" src="{{pics.picture.url}}" alt="">
<hr>
{% endfor %}
答案 0 :(得分:0)
您可以使用itertools.chain
:
context['ordered_instances'] = sorted(
chain(Post.objects.all(), Picture.objects.all()),
key=lambda instance: instance.date)