Как сортировать и фильтровать набор запросов на основе select_related в Django ORM
В моих моделях есть две таблицы, как показано ниже:
class Coin(models.Model):
coin_id = models.CharField(max_length=100, primary_key=True, unique=True)
name = models.CharField(max_length=100, null=True, blank=True)
class Fundamental(models.Model):
coin_id = models.OneToOneField(Coin, to_field="coin_id", db_column="coin_id", on_delete=models.CASCADE)
market_cap = models.BigIntegerField(null=True, blank=True)
price = models.FloatField(null=True, blank=True)
Теперь я хочу получить 1000 лучших монет, отсортированных по рыночной стоимости, или по рыночной стоимости в диапазоне 1000-1000000.
coins = Coin.objects.select_related('fundamental').order_by('ticker__market_cap')[:1000]
Я пишу свой запрос так, но он работает для некоторых монет, но если какой-либо монеты не существует, он показывает исключение, как
screener.models.Coin.fundamental.RelatedObjectDoesNotExist: У монеты нет фундаментального объекта.
Кто-нибудь поможет мне отфильтровать запрос хорошим способом