Size: a a a

Django [ru] #STAY HOME

2019 April 07

BE

Black Eyes in Django [ru] #STAY HOME
источник

p

pavel in Django [ru] #STAY HOME
>>> Test.objects.get(id=993)
>>> DoesNotExist
такое только try: expept  обрабытвать?
есть какие то еще вариант?
источник

TM

Tim Mustafin in Django [ru] #STAY HOME
.filter().first(), если объекта нет, будет None
источник

AK

Alexander Kalashnikov in Django [ru] #STAY HOME
Tim Mustafin
.filter().first(), если объекта нет, будет None
Лучше так не делать
источник

TM

Tim Mustafin in Django [ru] #STAY HOME
Alexander Kalashnikov
Лучше так не делать
Хм, почему?
источник

AK

Alexander Kalashnikov in Django [ru] #STAY HOME
Tim Mustafin
Хм, почему?
Потому что get предполагает, что объект один
источник

TM

Tim Mustafin in Django [ru] #STAY HOME
Alexander Kalashnikov
Потому что get предполагает, что объект один
ну если id это pk, то без разницы
источник

TM

Tim Mustafin in Django [ru] #STAY HOME
(не в скллайт, думаю)
источник

k

kambeerhunter in Django [ru] #STAY HOME
pavel
>>> Test.objects.get(id=993)
>>> DoesNotExist
такое только try: expept  обрабытвать?
есть какие то еще вариант?
get_object_or_404 как вариант. Но только если в контекст впишется
источник

k

kambeerhunter in Django [ru] #STAY HOME
Или get_or_create
источник

AM

Andrey Musikhin in Django [ru] #STAY HOME
Tim Mustafin
ну если id это pk, то без разницы
есть потенциальная возможность, что фильтр потом кто нить заменит неглядя, где может вернуться несколько.
источник

AK

Alexander Kalashnikov in Django [ru] #STAY HOME
pavel
>>> Test.objects.get(id=993)
>>> DoesNotExist
такое только try: expept  обрабытвать?
есть какие то еще вариант?
Мы в проекте юзали самописные get_or_none и filter_or_none
источник

TM

Tim Mustafin in Django [ru] #STAY HOME
Andrey Musikhin
есть потенциальная возможность, что фильтр потом кто нить заменит неглядя, где может вернуться несколько.
Так в целом да, стрельнуть в ногу всегда можно :)

Спросили про варианты, не про бест практис
источник

MB

Muslim Beibytuly in Django [ru] #STAY HOME
pavel
>>> Test.objects.get(id=993)
>>> DoesNotExist
такое только try: expept  обрабытвать?
есть какие то еще вариант?
Какое поведение вы хотите устроить, если объекта нет?
источник

p

pavel in Django [ru] #STAY HOME
Muslim Beibytuly
Какое поведение вы хотите устроить, если объекта нет?
есть моменты когда он в if
if Test.objects.get(id=993):
   return 'txt'
источник

TM

Tim Mustafin in Django [ru] #STAY HOME
.exists
источник

p

pavel in Django [ru] #STAY HOME
a = Test.objects.get(id=993)
if a:
  a.field = 10
источник

k

kambeerhunter in Django [ru] #STAY HOME
if Test.objects.filter(pk=111).exists():
   ...
источник

p

pavel in Django [ru] #STAY HOME
типо если такой есть обьект надо с его полями взаимодействовать
источник

TM

Tim Mustafin in Django [ru] #STAY HOME
try catch норм тут будет
источник