在 Django 管理界面上,當我email_confirmed在 Profile 模型下查看時,有沒有辦法讓我is_active在 Djangos 身份驗證用戶模型下自動更新?以某種方式將它們聯系在一起。如果用戶沒有收到他們的注冊電子郵件,希望能夠一鍵檢查兩者。
組態檔.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
管理員.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')
}),
)
我已經研究@reciever(setting_changed)過在 Profile.py 中使用,但不太明白。同樣,我在 admin.py 中查看了以下內容,并嘗試在其中設定is_active為 true 但無濟于事。
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "email_confirmed":
預先感謝您的幫助
uj5u.com熱心網友回復:
您需要為此覆寫保存方法并在確認電子郵件時保存用戶模型。
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)
我還沒有實施,但我認為這行得通。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/454465.html
上一篇:陣列陣列無法正確使用表情符號
