Size: a a a

Django [ru] #STAY HOME

2021 February 07

A

Andrey in Django [ru] #STAY HOME
Tom Cauf
хз, сложный случай. Не подскажу.
тогда просто скажи, сильно плохо делать проверку в методе save? если он рабочий. (точно знаю, что условия никак не поменяются)
источник

TC

Tom Cauf in Django [ru] #STAY HOME
Andrey
тогда просто скажи, сильно плохо делать проверку в методе save? если он рабочий. (точно знаю, что условия никак не поменяются)
Думается мне, не мидлварь ли тебе надо пилить. Но я не спец в джанге - только вкатываюсь по старой памяти
источник

РС

Роман Сарнов... in Django [ru] #STAY HOME
Привет. Использую simple jwt с django rest framework. На данный момент получаю токены с помощью username и password. Нужно получать токены так же с помощью полей email и password. Как я могу это реализовать? Что бы было как с AUTHENTICATION_BACKENDS в django
источник

D

Dmitry in Django [ru] #STAY HOME
Andrey
я видел это. А если нужно одновременно валидацию для 2 полей провести?
Переопределить метод validate в сериализаторе, он вызывается строго после валидации всех полей.
источник

A

Andrey in Django [ru] #STAY HOME
Dmitry
Переопределить метод validate в сериализаторе, он вызывается строго после валидации всех полей.
класс, как раз сейчас пробую. Если не трудно, то вот еще вопрос. У меня есть в моей модели метод для замены. он тоже будет проходить через сериализатор?

К примеру есть запись в бд, где имя = 'name-one', старт = 5, конец = 6. Вызываю метод, который принимает (старая_запись, когда_заменить, новая_запись), в методе находится запись. ее конец меняется на когда_заменить и с этого момента создаю новую запись (старт=когда_заменить, имя=новая_запись). Новая запись пройдет проверку в сериализаторе в таком случае?
источник

A

Andrey in Django [ru] #STAY HOME
Проще говоря, через сериализатор проходят проверку все данные для указанной модели?
источник

NS

Nik S in Django [ru] #STAY HOME
Подскажите, а как такое может быть, я специально создал wishlists2 чтобы досоздать аттрибут products_ids временно-исскуственный.
Но в контекст передавал изначальный список, list2 остался незающаный. И у меня несколько дней так работало. Но этого не может быть.
Ведь так в цикле фор - изначальные объекты не изменяются и по идее должны сбрасываться с каждой итерацией.
Или я чего-то не знаю? Есть какие-то ссылки на обьекты внутри списка?
def products(request):
   index_template = loader.get_template("commerce/products.html")
   
wishlists = Wishlist.objects.all()
   wishlists2 = []
   # Create extra attribute for each object in wishlists to make a comparison check in template
   for wishlist in wishlists:
       wishlist.products_ids = wishlist.products.values_list('id', flat=True)
       wishlists2.append(wishlist)
   context = {'products': Product.objects.all(), 'wishlists':
wishlists}
   return HttpResponse(index_template.render(context, request))
источник

NS

Nik S in Django [ru] #STAY HOME
Nik S
Подскажите, а как такое может быть, я специально создал wishlists2 чтобы досоздать аттрибут products_ids временно-исскуственный.
Но в контекст передавал изначальный список, list2 остался незающаный. И у меня несколько дней так работало. Но этого не может быть.
Ведь так в цикле фор - изначальные объекты не изменяются и по идее должны сбрасываться с каждой итерацией.
Или я чего-то не знаю? Есть какие-то ссылки на обьекты внутри списка?
def products(request):
   index_template = loader.get_template("commerce/products.html")
   
wishlists = Wishlist.objects.all()
   wishlists2 = []
   # Create extra attribute for each object in wishlists to make a comparison check in template
   for wishlist in wishlists:
       wishlist.products_ids = wishlist.products.values_list('id', flat=True)
       wishlists2.append(wishlist)
   context = {'products': Product.objects.all(), 'wishlists':
wishlists}
   return HttpResponse(index_template.render(context, request))
в конечном итоге работает в обоих вариантах, и wishlist и wishlist2
источник

FE

Friedrich Engels in Django [ru] #STAY HOME
Nik S
Подскажите, а как такое может быть, я специально создал wishlists2 чтобы досоздать аттрибут products_ids временно-исскуственный.
Но в контекст передавал изначальный список, list2 остался незающаный. И у меня несколько дней так работало. Но этого не может быть.
Ведь так в цикле фор - изначальные объекты не изменяются и по идее должны сбрасываться с каждой итерацией.
Или я чего-то не знаю? Есть какие-то ссылки на обьекты внутри списка?
def products(request):
   index_template = loader.get_template("commerce/products.html")
   
wishlists = Wishlist.objects.all()
   wishlists2 = []
   # Create extra attribute for each object in wishlists to make a comparison check in template
   for wishlist in wishlists:
       wishlist.products_ids = wishlist.products.values_list('id', flat=True)
       wishlists2.append(wishlist)
   context = {'products': Product.objects.all(), 'wishlists':
wishlists}
   return HttpResponse(index_template.render(context, request))
Я пока читал твоё сообщение, чуть не умер от мыслительной нагрузки
В чем проблема-то?
источник

D

Dmitry in Django [ru] #STAY HOME
Andrey
класс, как раз сейчас пробую. Если не трудно, то вот еще вопрос. У меня есть в моей модели метод для замены. он тоже будет проходить через сериализатор?

К примеру есть запись в бд, где имя = 'name-one', старт = 5, конец = 6. Вызываю метод, который принимает (старая_запись, когда_заменить, новая_запись), в методе находится запись. ее конец меняется на когда_заменить и с этого момента создаю новую запись (старт=когда_заменить, имя=новая_запись). Новая запись пройдет проверку в сериализаторе в таком случае?
Сериализатор будет валидировать только при вызове метода is_valid. Во всех остальных случаях проверки не будут вызваны
источник

A

Andrey in Django [ru] #STAY HOME
Dmitry
Сериализатор будет валидировать только при вызове метода is_valid. Во всех остальных случаях проверки не будут вызваны
а где тогда его вызывать?
источник

D

Dmitry in Django [ru] #STAY HOME
В drf он уже вызывается при методах создания и обновления записи через ApiView
источник

NS

Nik S in Django [ru] #STAY HOME
Friedrich Engels
Я пока читал твоё сообщение, чуть не умер от мыслительной нагрузки
В чем проблема-то?
в том, что надо было достать queryset и каждому элементу присвоить дополнительный аттрибут
и единтсвенный доступный мне способ - проитерировать через for, задать этот аттрибут и передать в НОВЫЙ список
т.к. обьект при итерации не изменяется.
т.е. если
>>> a = [1,2,3,4]
>>> for el in a:
...         el += 2
>>> a
[1, 2, 3, 4]
Но можно предположить что есть ситуации когда изменяется, когда там списки или специальные классы-обьекты, изза понятия ссылок или еще чегото
источник

NS

Nik S in Django [ru] #STAY HOME
Nik S
в том, что надо было достать queryset и каждому элементу присвоить дополнительный аттрибут
и единтсвенный доступный мне способ - проитерировать через for, задать этот аттрибут и передать в НОВЫЙ список
т.к. обьект при итерации не изменяется.
т.е. если
>>> a = [1,2,3,4]
>>> for el in a:
...         el += 2
>>> a
[1, 2, 3, 4]
Но можно предположить что есть ситуации когда изменяется, когда там списки или специальные классы-обьекты, изза понятия ссылок или еще чегото
Так например.
>>> b = [[1,2], [3,4],[5,6]]
>>> b
[[1, 2], [3, 4], [5, 6]]
>>> for el in b:
...     el[0] = 111
>>> b
[[111, 2], [111, 4], [111, 6]]

Может у обьектов queryset тоже есть такая функция?
источник

NS

Nik S in Django [ru] #STAY HOME
Friedrich Engels
Я пока читал твоё сообщение, чуть не умер от мыслительной нагрузки
В чем проблема-то?
проблема в торгах что нужно или не нужно создавать новый список и аппендить туда элементы queryset модифицированные
источник

TC

Tom Cauf in Django [ru] #STAY HOME
Nik S
проблема в торгах что нужно или не нужно создавать новый список и аппендить туда элементы queryset модифицированные
Ты точно знаком с концепциями реляционной теории и реализацией их в SQL?
источник

FE

Friedrich Engels in Django [ru] #STAY HOME
Я вот что-то все еще не понимаю ничего
При чем тут for?
Ты хочешь в таблице сделать новое поле? Или обновить существующее?
источник

NS

Nik S in Django [ru] #STAY HOME
не в таблице.
мне нужен дополнительный атрибут, чтобы его из шаблонов использовать.

таким образом
{% for product in products %}
    {% for wishlist in wishlists %}
          {% if product.id in wishlist.products_ids %}

этот список быстро и постоянно изменяется.
для него нету поля и в целом механизма автоматического формирования в БД.
каждый обьект queryset - это класс, и с ним так можно работать. и например дописать атрибут не изменяя ничего в БД.
источник

NS

Nik S in Django [ru] #STAY HOME
Ладно, можно считать видимо, что можно модифицировать на месте обьекты queryset через for без создания нового списка 🙂
источник

TC

Tom Cauf in Django [ru] #STAY HOME
Nik S
Ладно, можно считать видимо, что можно модифицировать на месте обьекты queryset через for без создания нового списка 🙂
Дичь какую-то написал.
источник