Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I have two models from different apps:

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)

I'm calling all data coming from sensors as follow:

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

However, I receive this error:

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

from documentation, I should be using select_related instead of prefetch_related, and the call seems to be coherent.

Am I missing something?

like image 456
Alvaro Avatar asked Feb 25 '19 08:02

Alvaro


1 Answers

In select_related only fields that are ForeignKey should be set. In your case the issue it that date field is a DateTimeField and not ForeignKey.

So in order to solve it just do it:

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

You can see examples of using syntax in docs.

like image 180
Sergey Pugach Avatar answered Sep 29 '22 03:09

Sergey Pugach