如果您有一个存储文章的应用程序,并且每个文章都可以由用户评分。此评级对其他用户不可见,并且是特定于用户的(无总体评级),即需要为每个用户存储相同文章对象的每个评级。
目前我完成这个疯狂的事情:
class Article(models.Model):
text = models.TextField(null=True, blank=True)
def __unicode__(self):
return self.text
class UserArticleStorage(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
null=True,
)
articles_rated_1 = models.ManyToManyField(
Article,
related_name="articles_rated_1",
blank=True
)
articles_rated_2 = models.ManyToManyField(
Article,
related_name="articles_rated_3",
blank=True
)
articles_rated_3 = models.ManyToManyField(
Article,
related_name="articles_rated_3",
blank=True
)
我在视图中看到它们,例如request.user.userarticlestorage.articles_rated_3
将此用户特定评级存储为IntegerField的正常方法是什么?
答案 0 :(得分:1)
我认为你可以通过定义一个简单的模型来做到这一点:
class Rating(models.Model):
article = models.ForeignKey(Article, ..., related_name='ratings')
user = models.ForeignKey(settings.AUTH_USER_MODEL,, ..., related_name='ratings')
rate = models.IntegerField()
然后通过以下方式访问评分:
request.user.ratings