【问题标题】:Why doesnt it save the changes to fields为什么不保存对字段的更改
【发布时间】:2019-03-17 22:13:29
【问题描述】:

我正在尝试更改我的数据库中对象的字段值。 我正在使用以下命令

我不知道为什么它没有将更改从 false 保存为 true。 请帮忙。 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() 它没有工作

【问题讨论】:

  • 你能把你的用户模型的代码贴出来吗?
  • 完成。从我的 models.py 文件中添加了代码
  • 有什么帮助吗? @kevswanberg

标签: python sql django database


【解决方案1】:

声明您正在编辑的模型。

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

从查询集访问用户时发生了一些奇怪的事情,阻止了它的保存。不清楚具体原因,但您可以按照上述模式解决。

【讨论】:

  • 非常感谢!这对我有用。但我真的不明白怎么做。如果 user 是 u[0] 类型的变量并将其属性更改为 true 并保存,它如何影响真实的 u[0]?不是说:- int b=10;诠释一个; a=b;a++; cout
猜你喜欢
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多