Почему он не сохраняет изменения в полях - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь изменить значения полей моих объектов в моей базе данных.Я использую следующие команды the last lines

Я не знаю, почему он не сохраняет изменения от ложного к истинному.Пожалуйста помоги.is_approved и is_superuser являются атрибутами пользователя u.

Спасибо

РЕДАКТИРОВАТЬ: код для модели пользователя

class User(AbstractUser):
    TRAINEE = 1
    MENTOR = 2
    MODERATOR = 3
    SUBMENTOR = 4
    USER_TYPES = (
        (TRAINEE, 'Trainee'),
        (MENTOR, 'Industry Expert'),
        (MODERATOR, 'Moderator'),
        (SUBMENTOR,'SubMentor')
    )



    user_type = models.PositiveSmallIntegerField(choices=USER_TYPES, null=True, blank=True)
    is_approved = models.BooleanField(default=False)
    has_paid_subscription = models.BooleanField(default=False)
    date_of_birth = models.DateField(null=True, blank=True)
    bio = models.CharField(max_length=2000, validators=[MinLengthValidator(100)], blank=True, null=True)
    profile_picture = models.ImageField(upload_to=profile_media_path, default='default_profile_pic.jpg', blank=True, null=True)
    profile_tags = models.ManyToManyField(Tag, blank=True, related_name='profiles')
    signup_completed = models.BooleanField(default=False)
    referral_code = models.CharField(max_length=100,null=True,blank=True)

    def __str__(self):
        return self.username

    def save(self, *args, **kwargs):
        super(User, self).save(*args, **kwargs)
        if self.bio:
            self.profile_tags.clear()
            lda_model = lda.LDA([self.bio])
            tags = lda_model.generate_tags()
            for tag in tags:
                name = str(tag).capitalize()
                try:
                    tag_object = Tag.objects.get(tag_name=name)
                except Tag.DoesNotExist:
                    tag_object = Tag(tag_name=name)
                    tag_object.save()
                self.profile_tags.add(tag_object)
                tag_object.save()

    @receiver(post_save, sender=settings.AUTH_USER_MODEL)
    def create_auth_token(sender, instance=None, created=False, **kwargs):
        if created:
            Token.objects.create(user=instance)

РЕДАКТИРОВАТЬ 2: Попытка u [0] .refresh_from_db () itне работал Last 5 lines

1 Ответ

0 голосов
/ 12 октября 2018

Объявите модель, которую вы редактируете.

user = u[0]
user.is_superuser=True
user.save()

При доступе к пользователю из набора запросов происходит нечто странное, что мешает его сохранению.Неясно, почему, но вы можете обойти это, следуя приведенной выше схеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...