簡體   English   中英

如何在Django用戶模型中保存時執行代碼?

[英]How to execute code on save in Django User model?

我想專門為Django用戶更改is_active字段時運行一些代碼,類似於save方法對其他模型的工作方式:

class Foo(models.Model):
    ...
    def save(self, *args, **kwargs):
        if self.pk is not None:
            orig = Foo.objects.get(pk=self.pk)
            if orig.is_active != self.is_active:
                # code goes here

可以通過與用戶模型一對一關系的另一個模型來完成此操作嗎? 就像是:

class Bar(models.Model):
    owner = models.OneToOneField(User, on_save=?)
    ...

我想我可以在相關模型上復制is_active字段,然后在保存相關模型時在User上設置is_active字段。 但這似乎有點麻煩。

您正在尋找這個信號

from django.db.models.signals import pre_save
from django.contrib.auth.models import User

def do_your_thing(sender, instance, **kwargs):
    # Do something
    print(instance)

pre_save.connect(do_your_thing, sender=User)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM