选中 email_confirmed 时 DJANGO 更新 is_active
DJANGO update is_active when email_confirmed is checked
在Django管理界面上,当我在Profile模型下勾选email_confirmed
时,有没有办法让我在Djangos authentication User模型下自动更新is_active
?以某种方式将它们联系在一起。如果用户没有收到他们的注册电子邮件,希望能够通过 1 次点击来检查两者。
Profile.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
unique_id = models.UUIDField(null=False, blank=False, default=uuid.uuid4, unique=True, editable=False)
email_confirmed = models.BooleanField(default=False)
def __str__(self):
return self.user.username
admin.py
@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
list_display = ('user', 'email_confirmed')
search_fields = ('user__email',)
readonly_fields = ('user', 'unique_id')
fieldsets = (
('Details', {
'fields': ('unique_id', 'user')
}),
('Status', {
'fields': ('email_confirmed')
}),
('Timezone', {
'fields': ('timezone')
}),
)
我研究过在 Profile.py 中使用 @reciever(setting_changed)
,但不是很明白。同样,我在 admin.py 中查看了以下内容,并尝试在其中将 is_active
设置为 true 但无济于事。
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "email_confirmed":
提前感谢您的帮助
您需要为此覆盖保存方法并在确认电子邮件时保存用户模型。
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
unique_id = models.UUIDField(null=False, blank=False, default=uuid.uuid4, unique=True, editable=False)
email_confirmed = models.BooleanField(default=False)
def __str__(self):
return self.user.username
def save(self,*args,**kwargs):
if self.email_confirmed:
self.user.is_active=True
self.user.save()
super(Profile,self).save(*args,**kwargs)
我还没有实现,但我认为这可行。
在Django管理界面上,当我在Profile模型下勾选email_confirmed
时,有没有办法让我在Djangos authentication User模型下自动更新is_active
?以某种方式将它们联系在一起。如果用户没有收到他们的注册电子邮件,希望能够通过 1 次点击来检查两者。
Profile.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
unique_id = models.UUIDField(null=False, blank=False, default=uuid.uuid4, unique=True, editable=False)
email_confirmed = models.BooleanField(default=False)
def __str__(self):
return self.user.username
admin.py
@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
list_display = ('user', 'email_confirmed')
search_fields = ('user__email',)
readonly_fields = ('user', 'unique_id')
fieldsets = (
('Details', {
'fields': ('unique_id', 'user')
}),
('Status', {
'fields': ('email_confirmed')
}),
('Timezone', {
'fields': ('timezone')
}),
)
我研究过在 Profile.py 中使用 @reciever(setting_changed)
,但不是很明白。同样,我在 admin.py 中查看了以下内容,并尝试在其中将 is_active
设置为 true 但无济于事。
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "email_confirmed":
提前感谢您的帮助
您需要为此覆盖保存方法并在确认电子邮件时保存用户模型。
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
unique_id = models.UUIDField(null=False, blank=False, default=uuid.uuid4, unique=True, editable=False)
email_confirmed = models.BooleanField(default=False)
def __str__(self):
return self.user.username
def save(self,*args,**kwargs):
if self.email_confirmed:
self.user.is_active=True
self.user.save()
super(Profile,self).save(*args,**kwargs)
我还没有实现,但我认为这可行。