Как я могу проверить, есть ли в модели Django поле, заданное параметром GET?

Полиморфизм - это способность обрабатывать класс объекта, как если бы он был родительским классом.

Например, предположим, что существует класс Animal и класс Dog, который наследуется от Animal. Полиморфизм - это способность рассматривать любой объект Dog как объект Animal так:

Dog* dog = new Dog;
Animal* animal = dog;
0
задан Kevin Christopher Henry 5 March 2019 в 08:01
поделиться

3 ответа

Вы должны просто проверить:

order_by = self.request.GET.get('order_by', None)
if order_by:
    Item.objects.all().order_by(order_by)
0
ответ дан Daniel Roseman 5 March 2019 в 08:01
поделиться

Вы можете сделать это, используя get_field :

from django.core.exceptions import FieldDoesNotExist


order_by = self.request.GET.get('order_by', 'id')
try:
    if order_by.startswith('-'):
        Item._meta.get_field(order_by[1:])
    else:
       Item._meta.get_field(order_by)
except FieldDoesNotExist:
    # field does not exist

К вашему сведению, это решение не будет работать с foreignkey/m2m__field_name выражениями.

0
ответ дан ruddra 5 March 2019 в 08:01
поделиться

Вы можете просто поймать исключение:

order_by = self.request.GET.get('order_by', None)  # item_typea
try:
    queryset = Item.objects.order_by(order_by)
    # evaluate the queryset - that's when the exception will be thrown
except FieldError:
    # deal with error
0
ответ дан Kevin Christopher Henry 5 March 2019 в 08:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: