Django - Как установить упорядочивание по умолчанию для кверисета полей ManyToMany
У меня есть следующие модели:
class Hashtag(models.Model):
...
created = models.DateTimeField(auto_now_add=True)
...
class Tweet(models.Model):
...
hashtags = models.ManyToManyField(
to='Hashtag',
through='TweetHashtag',
through_fields=('tweet', 'hashtag'),
)
...
class TweetHashtag(models.Model):
comment = models.ForeignKey(
to='Tweet',
on_delete=models.CASCADE,
)
hashtag = models.ForeignKey(
to='Hashtag',
on_delete=models.CASCADE,
related_name="tweets"
)
created = models.DateTimeField(auto_now_add=True)
Моя проблема в том, что когда я получаю твит, я хочу получить хэштеги в порядке их создания.
tweet = Tweet.objects.get(id=1)
hashtags = list(tweet.hashtags.all())
Когда я проверяю hashtags
, я вижу, что хэштеги расположены в неправильном порядке. Я хочу получить tweet.hashtags
порядок по through_model.created
(created
из TweetHashtag
модели.)
Есть ли какой-нибудь способ?
У меня есть одна идея, но я не знаю, как это сделать. Идея заключается в том, чтобы переопределить менеджер отношений hashtags
в модели Tweet.
Есть ли какой-нибудь способ?
Вы можете заказать HashTag
s с помощью .order_by(…)
[Django-doc]:
tweet = Tweet.objects.get(id=1)
hashtags = list(tweet.hashtags.order_by('tweethashtag__created'))