select_related 中给出的非关系字段:“ ”。选项是:(none)

Non-relational field given in select_related: ' '. Choices are: (none)

我有两个来自不同应用的模型:

class Measure(models.Model):
    date = models.DateTimeField(default="2018-01-23 15:55")
    average = models.FloatField(default=0)

class Sensor(models.Model):
    measure=models.ForeignKey(Measure, on_delete=models.CASCADE)
    value= models.FloatField(default=0)

我调用来自传感器的所有数据如下:

new_context = Sensor.objects.select_related('measure__date')

但是,我收到此错误:

django.core.exceptions.FieldError: Non-relational field given in select_related: 'date'. Choices are: (none)

根据文档,我应该使用 select_related 而不是 prefetch_related,并且调用似乎是连贯的。

我错过了什么吗?

select_related 中,仅应设置 ForeignKey 的字段。在您的情况下,问题是 date 字段是 DateTimeField 而不是 ForeignKey

所以为了解决它就这样做:

new_context = Sensor.objects.select_related('measure')

您可以在 docs 中查看使用语法的示例。