Size: a a a

Django [ru] #STAY HOME

2019 November 12

Aa

Alph alpH in Django [ru] #STAY HOME
Dan Tyan
так что смотри куда ты ты чего пихал
    def create(self, validated_data):
       return Choice.objects.create(**validated_data)
это пример из туториала, верно я понимаю - в моем случае он принимает dict , в который добавятся именованные аргументы , переданные в serializer.save() ?
источник

Aa

Alph alpH in Django [ru] #STAY HOME
то есть validated_data будет уже с аргументами , которые я отправлю в save()?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Alph alpH
то есть validated_data будет уже с аргументами , которые я отправлю в save()?
да
источник

Aa

Alph alpH in Django [ru] #STAY HOME
json
     {
       "user_fio": "Яшин Василий Васильевич",
       "user_role": "member"
   }

сериализатор
class CreateUsersSerializer(serializers.Serializer):
   user_fio = serializers.CharField(max_length=200)
   user_role = serializers.ChoiceField(choices=['member', 'expert', 'operator',])
   def create(self,kwargs):
       return User.objects.create(**kwargs)

часть вьюшки
            kwuserpass = {'username':userloginlat,'password':password}
           usercreate = userserializer.save(**kwuserpass)
источник

Aa

Alph alpH in Django [ru] #STAY HOME
ошибка
User() got an unexpected keyword argument 'user_fio'
источник

Aa

Alph alpH in Django [ru] #STAY HOME
запутался в лабиринтах
источник

DT

Dan Tyan in Django [ru] #STAY HOME
у тебя в модели user есть поле user_fio?
источник

Aa

Alph alpH in Django [ru] #STAY HOME
Dan Tyan
у тебя в модели user есть поле user_fio?
нет, я хочу полученную из user_fio строку преобразовывать к логину из трех букв, и отправлять в модель под username
источник

DT

Dan Tyan in Django [ru] #STAY HOME
ну тогда убирай его из кваргов
источник

Aa

Alph alpH in Django [ru] #STAY HOME
но он каким то боком сует user_fio всё равно, а я уже его обработал
            userfio = userserializer.validated_data['user_fio']
           userloginru = ''.join(map(lambda x: x[0].lower(), userfio.split()))
           userloginlat = transliterate.translit(userloginru, reversed=True)
           password = ''.join(secrets.choice(alphabet) for i in range(8))
           kwuserpass = {'username':userloginlat,'password':password}

и хочу засунуть в базу
usercreate = userserializer.save(**kwuserpass)
источник

DT

Dan Tyan in Django [ru] #STAY HOME
давай в гист код
тут сложно его воспринимать
источник

Aa

Alph alpH in Django [ru] #STAY HOME
Dan Tyan
давай в гист код
тут сложно его воспринимать
источник

Aa

Alph alpH in Django [ru] #STAY HOME
надеюсь разберетесь
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Alph alpH
надеюсь разберетесь
вот смотри

userserializer = CreateUsersSerializer(data=request.data)

на этом этапе данные уже ушли в сериализатор
источник

DT

Dan Tyan in Django [ru] #STAY HOME
те user_fio уже тама
источник

BE

Black Eyes in Django [ru] #STAY HOME
@dantyan а знаешь как добавить к фильтру None Или False,
.filter(regions__in=[region])
?+)
То есть взять все где есть такой-то регион, и + взять там где None
источник

DT

Dan Tyan in Django [ru] #STAY HOME
я бы тебе наверно посоветовал таки сделать следующее

этот код оставить

if request.method == 'POST':
       userserializer = CreateUsersSerializer(data=request.data)
       if userserializer.is_valid():
           usercreate = userserializer.save(**kwuserpass)
           return Response(userloginlat,status=status.HTTP_201_CREATED)


а остальное перенести в сериализатор в метод

create
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Black Eyes
@dantyan а знаешь как добавить к фильтру None Или False,
.filter(regions__in=[region])
?+)
То есть взять все где есть такой-то регион, и + взять там где None
знаю
источник

BE

Black Eyes in Django [ru] #STAY HOME
Dan Tyan
знаю
Какой-то медот или синтаксис?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
.filter(Q(regions__in=[region]) | Q(regions__isnull=True))
источник