Django Signal post_save()

问题描述 投票:1回答:1

一旦系统检测到您已经邀请2位用户,您的个人资料将自动保存在毕业生列表中

请看这张图片,例如:

enter image description here

这是毕业生名单表。

enter image description here

如图所示,Joe Dio已经邀请了2个用户(mirojustin),(您可以在Sponsor用户中看到)] >

我希望您能帮助我使用django信号来解决它,预先感谢:)

我希望我做的例子能使您理解我想要得到的东西

这是我的模型。py

class User(models.Model):
    firstname = models.CharField(max_length=500, null=True,blank=True)
    lastname = models.CharField(max_length=500, null=True, blank=True)
    middlename = models.CharField(max_length=500, null=True, blank=True)

    birthday = models.CharField(max_length=500, null=True, blank=True)
    Email  =  models.CharField(max_length=500,null=True,blank=True)
    Sponsor_User = models.ForeignKey('self', on_delete=models.CASCADE,blank=True, null=True)

class User_GraduateList(models.Model):
    User = models.ForeignKey(User, related_name='+', on_delete=models.CASCADE, blank=True)
    def __str__(self):
        suser = '{0.User}'

UPDATE

这是@AKS先生的答案>
class User_GraduateList(models.Model):
    User = models.ForeignKey(User, related_name='+', on_delete=models.CASCADE, blank=True)

    @receiver(post_save, sender=User)
    def create_graduates(sender, instance, created, **kwargs):
        sponsor = instance.Sponsor_User
        if created and sponsor:
            if sponsor.user_set.count() >= 2:
                if not User_GraduateList.objects.filter(User=sponsor).exists():
                    User_GraduateList.objects.create(User=sponsor)

它没有用。

[一旦系统检测到您已经邀请了2个用户,您的个人资料将自动保存在毕业生列表中,请参见此图片,例如:这是毕业生列表。可以的...

django django-models
1个回答
1
投票
class User_GraduateList(models.Model):
    User = models.ForeignKey(User, related_name='+', on_delete=models.CASCADE, blank=True)

@receiver(post_save, sender=User)
def create_graduates(sender, instance, created, **kwargs):
    sponsor = instance.Sponsor_User
    if created and sponsor:
        if sponsor.user_set.count() >= 2:
            if not User_GraduateList.objects.filter(User=sponsor).exists():
                User_GraduateList.objects.create(User=sponsor)

出于阅读目的,我嵌套了if条件。如果您感到舒适,可以加入and

© www.soinside.com 2019 - 2024. All rights reserved.