Как вернуть конкретную информацию в кортеже из набора запросов Django

#django #django-models #django-queryset

#django #django-модели #django-queryset

Вопрос:

У меня есть простая модель с кортежем, который возвращает информацию как таковую ниже:

 class Store(models.Model):
STORE_BRAND = (
    ('nike', 'Nike'),
    ('adidas', 'Adidas'),
    ('puma', 'Puma'),
)
online_store = models.CharField(unique=True, max_length=255, choices=STORE_BRAND)

def __str__(self):
    return self.online_store
  

Я пытаюсь вернуть имя хранилища, чтобы я мог использовать его в условном операторе в контекстном процессоре.

 store_brand = Store.objects.get(online_store='nike')
  

Работает нормально, возвращает

 <Store: nike> 
  

Теперь я пытаюсь использовать его в условном операторе, и он продолжает возвращать false:

 >>> store_brand == 'nike'
False
  

Что я делаю не так?

Комментарии:

1. Well store_brand — это Store объект, а не строка. Вы можете проверить это с store_brand.online_store == 'nike' помощью .

Ответ №1:

Вы используете объект для ссылки на атрибут. Вы должны использовать правильный атрибут для ссылки на значение, к которому вы хотите получить доступ.

 >>> store_brand = Store.objects.get(online_store='nike')

>>> store_brand.online_store == 'nike'  # the attribute online_store
True
>>> store_brand.__str__() == 'nike'  # since you defined __str__ to return the required attribute, you can use this too
True