#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