Задать вопрос
allposts_vitali
@allposts_vitali

Как обратиться к полям объекта не используя for?

Здравствуйте, я хочу обратиться к полю объекта. Конечно, я это делаю через цикл FOR, но я точно! знаю, что я получаю только один объект, как я могу сократить код?

try:
    set_like = Like.objects.filter(ip=client_ip)[:1] # Это фильтр и получение одного объекта
except ObjectDoesNotExist:
    ...
else: # Это то что  планирую сократить
    for t_ip in set_like:
        test_ip = t_ip.ip
    if client_ip in test_ip:
       ...
    else:
        ...

Так же смежный вопрос!
В моделях я добавил для вывода:
def __unicode__(self):
return self.ip # Вывод IP

Как мне поместить это значение в переменную?
т.е.
object = Object.get(pk=1)
temp = object.ip
  • Вопрос задан
  • 281 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
NeiroNx
@NeiroNx
Программист
test_ip = set_like[0].ip
так?
Ответ написан
winordie
@winordie
Лучшая документация -- исходники
Like.objects.filter(ip=client_ip).first()
Хотя на самом деле не ясно зачем фильтр, используйте гет, если там только один елемент.
Like.objects.get(ip=client_ip)
Если же ис несколько, то вы уверенытчто нужный будет первым?
Ответ написан
astrikovd
@astrikovd
Python Developer
Используйте метод first() вместо того что вы написали.

like = Like.objects.filter(ip=client_ip).first()  # Вытаскиваете первый объект из полученного кверисета.
if like:
     test_ip = like.ip
     ...


P.S Избегайте использования ключевых слов в качестве названия переменных (в вашем примере - не используйте слово object)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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