Фильтры Django с условным полем
У меня есть модальная страница User и модель UserAddress. Я пытаюсь сортировать пользователей на основе поля UserAddress.city.
#models
class User(AbstractUser):
...
class UserAddress(TimeStampedModel):
...
city = models.CharField(max_length=50, null=True)
...
primary = models.BooleanField(default=False) #User can only have 1 primary record
active = models.BooleanField(default=True)
#viewset
class UserViewset(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = serializers.UserSerializer
ordering_fields = [
...
'useraddress__city'
]
#serializers
class UserBasicSerializer(serializers.ModelSerializer):
user_city = serializers.SerializerMethodField()
def get_user_city(self, obj):
try:
address = models.UserAddress.objects.filter(
primary=True, active-True, user=obj
).first()
return address.city
except:
return None
class Meta(object):
model = User
fields = (
...
"user_city",
...
)
Если использовать domain?sort=London, то это работает, однако не учитывает активные и первичные поля. Поэтому я получаю сортировку с пробелами null в результате. Я хочу рассматривать эти пробелы как настоящие нулевые значения, но не знаю как.
P.S. Я использую JSON API, поэтому сортировка и не упорядочивание в url.