Django信号后置保存()
一旦系统检测到您已经邀请了2名用户,您的个人资料将自动保存在毕业生列表中 请参见此图片,例如: 这是毕业生名单表 如图所示,Joe Dio已经邀请了2位用户(miro和justin)(您可以在赞助商用户中看到) 我希望您能使用django信号帮助我解决这个问题,提前谢谢:) 我希望我的例子能让你明白我想得到什么 这是我的模特Django信号后置保存(),django,django-models,Django,Django Models,一旦系统检测到您已经邀请了2名用户,您的个人资料将自动保存在毕业生列表中 请参见此图片,例如: 这是毕业生名单表 如图所示,Joe Dio已经邀请了2位用户(miro和justin)(您可以在赞助商用户中看到) 我希望您能使用django信号帮助我解决这个问题,提前谢谢:) 我希望我的例子能让你明白我想得到什么 这是我的模特 class User(models.Model): firstname = models.CharField(max_length=500, null=True
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条件。如果您觉得舒服,您可以使用和
加入
上面的解决方案基于这样的假设,即我们只希望在创建新用户时执行此操作。如果可以稍后设置发起人用户,则可以从第一个条件中删除创建的
检查
另外,从模型来看,我认为最好在
用户_毕业生列表
和用户
模型之间建立一对一的关系。我认为您忘记了将字典中的任何值从视图发送到html页面。不mr@MajidA…为什么您的渲染
在for循环中
。它必须在那个街区之外。除非它只会重复一次。错误的键入sorry是在创建受邀请的用户时设置的赞助商用户
,或者以后也可以链接它?我应该在代码中的什么位置设置?在User_GraduateList下?是的,您需要导入必要的东西。它不起作用mr@AKS,我已经导入了接收器并进行了后期保存,我很确定我误解了你的代码,或者你的答案不起作用,只是说不起作用也没有任何帮助。您是否遇到任何错误,或者您是否尝试过调试,这正是它无法按预期工作的原因?根据您更新的问题,该方法不应放在用户\ U GraduateList中。当你在下面提问时,我的意思是在模型下面,但与模型的方法不在同一级别。我没有收到任何错误,我已经调试过了,不存在错误,我尝试在创建后添加打印('ssss'),发起人:它没有在终端中打印