python - 在引用另一个模型时使用 Django 的注释函数?

标签 python django django-models django-orm

我有三个模型:用户、电影和评级模型:

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. ratingMovie.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

我将如何获得正确的注释。

最佳答案

不要混淆Value (用于文字值)和 F (用于数据库列名称):

userRating.annotate(imdb_diff=F('rating')-F('movie__imdb_rating'))

关于python - 在引用另一个模型时使用 Django 的注释函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55634443/

相关文章:

python - 将 StratifiedShuffleSplit 与稀疏矩阵一起使用

python - 为什么我的神经网络验证准确率高于我的训练准确率,并且它们都保持不变?

python - 使用无效的 uuid 时引发 404 而不是 500

Django自定义模型方法抛出属性错误

python - 如何获取 "Word"在 NLP 中的重要性(TFIDF + 逻辑回归)

python - 使用defaultdict的解决方案和使用setdefault的解决方案有什么区别?

css - Django的css文件缓存

python - 从外键类型的字段中选择值

django - 初始数据夹具中的用户

Django 。 Q() 是如何工作的?