【发布时间】:2021-04-29 10:15:38
【问题描述】:
# models.py
from django.contrib.auth.models import User
# Create your models here.
class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
avatar = models.ImageField(upload_to=avatar_photo_upload, blank=True)
banner = models.ImageField(upload_to=banner_photo_upload, blank=True)
bio = models.TextField(max_length=150, blank=True)
date_joined = models.DateField(auto_now_add=True)
time_joined = models.TimeField(auto_now_add=True)
def __str__(self) -> str:
return self.user.username
class Friend(models.Model):
# The friends, sender first, reciever second
friends = models.ManyToManyField(Profile)
# accepted or rejected
accepted = models.BooleanField(default=False)
rejected = models.BooleanField(default=False)
date_added = models.DateField(auto_now=True)
time_added = models.TimeField(auto_now=True)
def __str__(self):
if self.accepted == False and self.rejected == False:
return f'{" sent a request to ".join([i.user.username for i in self.friends.all()])}'
else:
if self.accepted == True and self.rejected == True:
return f'{" was a friend of ".join([i.user.username for i in self.friends.all()])}'
elif self.accepted == True and self.rejected == False:
return f'{" is a friend of ".join([i.user.username for i in self.friends.all()])}'
else:
return f'{" was rejected as a friend by ".join([i.user.username for i in self.friends.all()])}'
friends 字段是many-to-many field,
用一个例子来理解我的问题:
例如 -> Profile 对象a 被创建,然后 Profile 对象b。
现在我在friend 字段中添加配置文件对象b,然后在a 中添加对象,但是friend 字段将它们排序在a 然后b...
如何按添加时间排序。
谢谢。
编辑:
预期输出:插入值的顺序相同。
【问题讨论】:
-
也请与我们分享
Profile模型。 -
我已经编辑并添加了 Profile 模型。
-
很好,那么
order_by是你的朋友。 docs.djangoproject.com/en/3.2/ref/models/querysets/… 您可以使用类似YOUR_MODEL_NAME.objects.filter(FILTER_FIELDS).order_by("-profile__date_joined")的东西按 date_joined 降序排列。 -
我无法明确我的问题,我想要的是按添加时间对字段进行排序,这意味着 - 添加
b然后添加a我希望订单是 @ 987654338@,添加它的顺序与输出的顺序应该是......非常抱歉给您带来不便。