2013-08-11 2 views
0

У меня есть две таблицы под названием «Расположение и скорость».django - как запросить это?

Rate таблица имеет следующие элементы: enter image description here

von_location является ForeignKey к местоположению стола.

Я хочу найти место для желаемого курса. если я ищу место с романтикой 2, я получаю местоположение с id 5. это отлично. но если я также ищу место с романтикой 3, я также получаю это место с id 5. но я хочу эту логику:

если в одном месте две скорости, получите последнюю. как я могу это сделать в django?

мои модели:

class Location(models.Model): 
name = models.TextField() 
adres = models.TextField() 

class Rate(models.Model): 
von_location = models.ForeignKey(Location,related_name='locations_bewertung') 
bewertung = models.IntegerField(max_length=2) 
romantic = models.IntegerField(max_length=2) 
priceleistung = models.IntegerField(max_length=2) 
datum = DateTimeField(auto_add_now=True) 

я упал некоторые столбцы, которые не имеют отношение к моему вопросу

я попытался это:

locations = Location.objects.filter(**s_kwargs).order_by('locations_bewertung').distinct('locations_bewertung') 

я все еще получаю такое же место для обоих запросы. 2, и 3.

+0

Не мог бы вы показать модели? – alecxe

+0

@alecxe, да, pls c мое обновление – doniyor

+0

cr и von_user_id не покрываются вашими моделями, хотя они появляются в базе данных. – Tadeck

ответ

1

Я запутался о том, пытаетесь ли вы фильтровать по Location или Rate. Ваше введение подразумевает, что вы хотите отфильтровать на Rate (так как romantic принадлежит к этой модели), но ваш пример запроса фильтруется по Location.

Если вы хотите найти Location сами последний Rate, связанные с набором параметров запроса, попробовать что-то вроде:

location = Rate.objects.filter(romantic=something).latest('datum').von_location 
+0

благодарит Кевина, я проверю его – doniyor

1

Если я вас правильно понимаю, что вы хотите, чтобы добавить функцию в модели Location, например:

def get_latest_rate(self): 
    return self.rate_set.latest('datum') 

Тогда вы можете сделать это:

[l.get_latest_rate() for l in Location.objects.filter(**s_kwargs)] 
Смежные вопросы