Как отсортировать связанные объекты на основе временной метки, когда мы связываем два объекта?
я пытаюсь сортировать объекты на основе времени, когда я связываю два объекта.
Например, у меня есть две модели:
class Album(models.Model):
title = models.CharField(max_length=255)
release_date = models.DateField()
order = models.IntegerField(blank=True, null=True, help_text="The order of albums to be displayed.")
class Artist(models.Model):
name = models.CharField(max_length=255)
stage_name = models.CharField(max_length=125)
is_active = models.BooleanField(default=True)
albums = models.ManyToManyField(Album, blank=True)
У меня есть модель Album, в которой есть поле order для сортировки приоритета альбома, когда мы отображаем его на API. Конечно, это работает, когда я сортирую альбомы на основе поля order:
artist = Artist.objects.get(id=76)
album1 = Album.objects.create(title="Untitled Album", order=2)
album2 = Album.objects.create(title="Magical Nights", order=1)
artist.albums.add(album1, album2)
albums = Album.objects.filter(artist=artist).order_by('order')
print(albums)
>> <QuerySet [<Album: Magical Nights>, <Album: Untitled Album>]>
Но когда у меня есть несколько альбомов с одинаковым приоритетом, я хочу также сортировать объекты на основе временной метки, когда я связываю элемент. Что-то вроде этого:
artist2 = Artist.objects.get(id=77)
new_album1 = Album.objects.create(title="Sapphire Blue", order=1)
new_album2 = Album.objects.create(title="Now We're Strangers", order=2)
new_album3 = Album.objects.create(title="Fight For You", order=1)
artist2.albums.add(new_album3)
artist2.albums.add(new_album2)
artist2.albums.add(new_album1)
albums = Album.objects.filter(artist=artist2).order_by('order')
print(albums)
>> <QuerySet [<Album: Sapphire Blue>, <Album: Fight For You>, <Album: Now We're Strangers>]>
Моим ожидаемым результатом является то, что когда мы фильтруем на основе order и метки времени, это будет что-то вроде этого:
>> <QuerySet <Album: Fight For You>, [<Album: Sapphire Blue>, <Album: Now We're Strangers>]>
Если я сортирую только по порядку, это не всегда может отсортировать по времени, когда я добавляю альбом к исполнителю. Есть ли способ сделать это? Я не могу найти правильное ключевое слово для поиска или метод для этого. Большое спасибо.