Как сортировать и фильтровать набор запросов на основе 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: У монеты нет фундаментального объекта.

Кто-нибудь поможет мне отфильтровать запрос хорошим способом

Вернуться на верх