2013-02-10 9 views
0

Я закончил проект django с доказательством концепции и теперь хочу переделать модели более надежными.django: Модели с несколькими запросами внешнего ключа

Базовая модель называется PhraseRequest:

class PhraseRequest(models.Model): 
    user = models.ForeignKey(User) 
    timestamp = models.DateTimeField() 
    phrase = models.TextField() 

Теперь усложнение приходит в том, что один PhraseRequest имеет кучу связанных моделей, PhraseRequestVote, Phrase (ответ), PhraseRequestComment & гр.

Теперь, когда я перечисляю слово, в первую десятку фразовых запросов в порядке голосов, у моего шаблона есть для каждого цикла, который получает десять объектов PhraseRequest. Затем он заполняет HTML с запросом и все связанные с ним данные.

До сих пор я добавлял словарю каждый PhraseRequest «ы для достижения этой цели:

for r in phrase_requests: 
    r.votes = PhraseRequestVote.objects.filter(request=r) 
    r.n_votes = sum([v.weight for v in r.votes]) 
    r.comments = PhraseRequestComment.objects.filter(request=r) 
    #and so on 

Наглядно, это не кажется правильным - Там должен быть„правильный“способ сделать это. Нужно ли мне переделывать модели? Запрос?

ответ

1

Вы можете сделать функцию в своей модели и заказать ее на ваш взгляд. Как это

models.py

class model_name(models.Model) 

    ........ 

    def votes(self): 
     return Vote_Name.objects.filter(phrase_id=self).count() 
+0

ааа да! Я мог бы даже сделать это прав собственности? Превратив «getattr» – jsj

+0

yup, удачи и проведем ваш эксперимент – catherine

Смежные вопросы