在引用另一个模型时使用 Django 的注释函数?
Using Django's annotate function while referencing another model?
我有三个模型:用户、电影和评级模型:
class User(models.Model):
user_id = models.IntegerField(primary_key=True)
class Movie(models.Model):
movie_id = models.IntegerField(primary_key=True)
imdb_rating = models.FloatField(null=True)
rt_rating = models.IntegerField(null=True)
class Rating(models.Model):
rating_id = models.IntegerField(primary_key=True)
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='ratings'
)
movie = models.ForeignKey(
Movie,
on_delete=models.CASCADE,
related_name='ratings'
)
rating = models.FloatField()
对于评级,我想以 Rating.rating
和 Movie.imdb_rating
的区别的方式进行注释。
我还有 userRatings
,其中仅包含 id = 1 的用户的评分,以简化事情。
我试过使用
userRating.annotate(imdb_diff=Value('rating') - Value('movie__imdb_rating'))
但是我得到了错误
django.core.exceptions.FieldError: Cannot resolve expression type, unknown output_field
我将如何获得正确的注释。
我有三个模型:用户、电影和评级模型:
class User(models.Model):
user_id = models.IntegerField(primary_key=True)
class Movie(models.Model):
movie_id = models.IntegerField(primary_key=True)
imdb_rating = models.FloatField(null=True)
rt_rating = models.IntegerField(null=True)
class Rating(models.Model):
rating_id = models.IntegerField(primary_key=True)
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='ratings'
)
movie = models.ForeignKey(
Movie,
on_delete=models.CASCADE,
related_name='ratings'
)
rating = models.FloatField()
对于评级,我想以 Rating.rating
和 Movie.imdb_rating
的区别的方式进行注释。
我还有 userRatings
,其中仅包含 id = 1 的用户的评分,以简化事情。
我试过使用
userRating.annotate(imdb_diff=Value('rating') - Value('movie__imdb_rating'))
但是我得到了错误
django.core.exceptions.FieldError: Cannot resolve expression type, unknown output_field
我将如何获得正确的注释。