系统检测到您已经邀请2位用户后,您的个人资料将自动保存在毕业生列表中
请看这张图片,例如:
这是毕业生名单表。
如图所示,Joe Dio已经邀请了2个用户(miro和justin),(您可以在Sponsor用户中看到它)
希望您能帮助我使用django信号来解决它,在此先感谢:)
我希望我做的例子能使您理解我想要得到的
这是我的模型
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}'
更新这是@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)
它没有工作。
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
。
上面的解决方案基于以下假设:我们仅在创建新用户时才想这样做。如果以后可以设置发起人用户,则created
可以从第一个条件中删除支票。
另外,查看模型,我认为最好在User_GraduateList
和User
模型之间建立一对一的关系。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句