我正在尝试获取所有用户(除外request.user),并按他们收到的最后一条消息的日期时间对其进行排序。也许我做错了。
@login_required
def get_users(request):
if request.method == 'POST':
users = list(User.objects.filter(~Q(username = request.user))
.order_by('personal_messages__sent_date').values())
return HttpResponse(dumps({'users': users}))
return redirect('message:index')
dumps来自json_tricks。Vue.js对象通过JS fetch
My models.py接收数据
from django.db import models
from django.conf import settings
class PersonalMessage(models.Model):
text = models.TextField()
sender = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='personal_messages', null=True, on_delete=models.SET_NULL)
recipient = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL)
sent_date = models.DateTimeField('sent date', auto_now_add=True)
问题是,如果我只做得users = list(User.objects.filter(~Q(username = request.user)).values())很好,但是如果我添加order_by,users = list(User.objects.filter(~Q(username = request.user)) .order_by('personal_messages__sent_date').values())我将为每个用户获得重复项。如果用户与n条消息链接,似乎它会向每个用户返回n次。
也许还有另一种方式。
任何想法?
临摹微笑
相关分类