Могу ли я использовать get_or_create() в django для назначения глобальной переменной?Python

Программы на Python
Ответить
Anonymous
 Могу ли я использовать get_or_create() в django для назначения глобальной переменной?

Сообщение Anonymous »

Я стажер в компании, и мы используем django в качестве платформы.
Я работал над системой регистрации, состоящей из двух частей, в которой администратор выполняет первоначальную регистрацию, после чего пользователю отправляется ссылка через SMS, чтобы пользователь мог завершить регистрацию.
У меня есть ощущение, что нужно использовать функцию get_or_create для назначения глобальной переменной, но я боюсь сломать это (я использую git, но я все еще напуган).
class RegisterSerializer(serializers.ModelSerializer):
"""Class for registering users with multiple groups."""

# is_superuser = serializers.BooleanField(default=False, required=False, write_only=True)

class Meta:
fields = [
"national_code",
"phone_number",
]
model = User
extra_kwargs = {
"national_code": {"write_only": True, "validators": []},
"phone_number": {"write_only": True, "validators": []},
}

def validate(self, attrs):
if not attrs.get("national_code"):
raise serializers.ValidationError(_("National code is required."))
if not attrs.get("phone_number"):
raise serializers.ValidationError(_("Phone number is required."))
if User.objects.filter(
phone_number=attrs.get("phone_number"),
national_code=attrs.get("national_code"),
is_complete=True,
).exists():
raise serializers.ValidationError(_("user already exists"))
# if User.objects.filter(phone_number=attrs.get("phone_number")).exists():
# raise serializers.ValidationError(_("Phone number already exist."))
return attrs

def create(self, validated_data):
phone_number = validated_data["phone_number"]
national_code = validated_data["national_code"]
user, created = User.objects.get_or_create(
phone_number=phone_number, national_code=national_code, defaults={"is_complete": False}
)
token = RegisterToken.for_user(user)
try:
Sms.sendSMS(
phone_number,
f"{str(settings.DOMAIN_NAME)}/api/accounts/complete-register/?token={str(token)}",
)
# do not delete this part soon or later we will use this
# Sms.SendRegisterLink(
# phone_number,
# [
# {
# 'national_code':national_code,
# 'domain_name':settings.DOMAIN_NAME,
# 'token':token
# },
# ],
# )
return user
except Exception as err:
raise ValidationError(_("Failed to send SMS: ") + str(err)) from err


Подробнее здесь: https://stackoverflow.com/questions/798 ... l-variable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»