@9550668

Как убрать required_field в Serializer?

Всем здравствуйте!

Я пишу класс изменения данных о пользователе.

Код следующий:
class UsersUpdateAPIView(generics.UpdateAPIView, UserCustomMixin):
    '''
    USERS Update data class
    Data to update:
    * fullname,
    * email,
    * date_of_birth,
    * avatar
    '''

    serializer_class = UsersSerializer
    queryset = Users.objects.all()

    def put(self, request, *args, **kwargs):
        response_data = {}
        response_status = 200

        serializer = UsersSerializer(data=request.data)

        if serializer.is_valid():
            print(serializer.data)
        else:
            print(serializer.errors)

        return JsonResponse(response_data, status=response_status)


Модель:
class Users(AbstractBaseUser):
    username = models.CharField(
        max_length=50,
        unique=True,
        validators=[
            RegexValidator(
                regex= USERNAME_REGEX,
                message='Username field can only be Alphanameric or contain additional ., _, @, +, -',
                code='invalid_username')]
    )

    email = models.EmailField(
        verbose_name='email address',
        max_length=155,
        unique=True,
        blank=True
    )

    mobile = models.CharField(
        unique=True,
        max_length=50,
        verbose_name="Mobile phone number",
        validators=[
            RegexValidator(
            regex=MOBILE_REGEX,
            message='Wrong mobile number sequence',
            code='Invalid mobile number')]
    )

    fullname = models.CharField(
        max_length = 100,
        verbose_name = "Name and Surname",
        default="",
        blank=True
    )

    avatar = models.ForeignKey(UsersAvatar, on_delete=models.SET_NULL, null=True, default=None)

    country_code = models.IntegerField(verbose_name="Country", default=1)

    date_of_birth = models.DateField(blank=True, default="2000-01-01")

    registered_date = models.DateTimeField(auto_now_add=True)

    last_seen = models.DateTimeField(auto_now=True)

    is_active = models.BooleanField(default=True)

    is_worker = models.BooleanField(default=False)

    is_admin = models.BooleanField(default=False)

    objects = UsersManager()

    USERNAME_FIELD = 'mobile'


При отправке через Postman запроса на изменение 'fullname' выдает ошибку:
{'username': [ErrorDetail(string='This field is required.', code='required')]}

Но username устанавливается при создании. Почему на изменение каких-либо данных он просит его? Я пробовал передавать текущее значение username, тоже ошибка, но 'unique' (с учетом требования к полю username в модели).

Подскажите, пожалуйста, как исправить?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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