【发布时间】:2018-07-05 15:52:56
【问题描述】:
我的项目是一个社交网站,可以向朋友发送请求并结交朋友。 我使用 oneToone 字段扩展了 django 现有的用户模型。
到目前为止,我已经能够执行上述操作,但是当用户接受请求时,发送请求的用户和接受请求的用户都必须在其扩展用户模型中增加一个值,该模型存储该值他们的朋友数。 我在试图解决这个问题时遇到了困难。 我也使用过信号,但它不起作用。
这是我的代码:
models.py:
class Friends(models.Model):
"""Model for saving relationship of user and friends"""
request_id = models.ForeignKey(User,on_delete=models.CASCADE,related_name='current_user')
friend_id = models.ForeignKey(User,on_delete=models.CASCADE,related_name='user_friend')
created_on = models.DateTimeField(auto_now_add=True,auto_now=False)
class Meta:
verbose_name_plural = "Friends"
def __str__(self):
return str(self.friend_id)
class Profile(models.Model):
user = models.OneToOneField(User,related_name='profile',on_delete=models.CASCADE)
location = models.CharField(max_length=30,blank=True)
friends_count = models.PositiveIntegerField(default=0)
profile_pic = models.ImageField(upload_to='profile_pics/',blank=True,null=True)
def natural_key(self):
return (self.user.username,)
signals.py:
@receiver(post_save,sender=Friends)
def update_friends_count(sender,instance,created,**kwargs):
if created:
user_profile = Profile(user = instance.request_id)
user_profile.friends_count=F('friends_count')+1
user_profile.save()
任何帮助将不胜感激!!!!!!提前谢谢!!!
【问题讨论】:
-
你能纠正缩进和cmets吗?
-
可以吗!!!!你有什么想法解决这个问题吗??? @JerinPeterGeorge
-
我认为你必须实现
M2M关系而不是FK关系 -
这将如何解决我的问题...。我想要一个朋友而不是关系...因为如果信号.py 中的方法被清除,一切正常
-
您为每个实例定义了它,但您需要为整个
Profile表定义它
标签: django django-rest-framework django-views signals django-users