class User(models.Model):
username = models.CharField(max_length=150)
email = models.EmailField(max_length=150)
class Recipes(models.Model):
title = models.CharField(max_length=150)
user = models.ForeignKey(User, related_name='user', on_delete=models.CASCADE, null=True)
created = models.DateTimeField(auto_now=True, auto_now_add=False)
updated = models.DateTimeField(auto_now=False, auto_now_add=True)
class FavoriteRecipes(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
recipe = models.ForeignKey(Recipes, on_delete=models.CASCADE, null=True)
class FavoriteChef(models.Model):
user = models.ForeignKey(User, related_name='user', on_delete=models.CASCADE)
favorite = models.ForeignKey(User, related_name='favorite', on_delete=models.CASCADE)
我正在尝试为食谱和用户创建评级系统。我不确定这是否是最佳方法,但他是我的问题:
我如何计算不同用户喜欢的食谱,例如:
如何使用这种方法限制用户投票,因为django会生成自己的pk条目,因为它可以存在:
pk:1位用户1喜欢食谱1
pk:2位用户1喜欢食谱1
并谢谢
答案 0 :(得分:1)
您可以通过以下方式限制投票数:
if FavoriteRecipes.objects.filter(recipe=Recipes, user=User).exists():
#do not update
else:
#save vote
然后你可以用以下方式计算选票:
count= FavoriteRecipes.objects.filter(recipe=Recipe).count()