2013-06-22 1 views
3

Я пытаюсь фильтровать записи, используя метод модели, но не уверен, как реализовать его в представлении.Django, фильтровать записи из модельного метода?

Должно ли это быть сделано таким образом или полностью на вид в какой-либо другой усадьбе?

Вот моя модель ниже:

class Message(models.Model): 
    msg_id = models.IntegerField(unique=True) 
    user = models.ForeignKey(User) 
    message = models.CharField(max_length=300) 
    added = models.DateTimeField('added') 

    def about_cats(self): 
     matches = ['cat', 'kitty', 'meow'] 
     return any(s in self.message for s in matches) 

    def __unicode__(self): 
     return self.message 
+0

Это необходимо/полезно в любом месте, кроме зрения? –

+0

Кроме того, 'return any (...)'. –

+0

@ignacio только в view.py. добавлен возврат. – user2387035

ответ

2

Так как вам нужно отфильтровать объект QuerySet, вы можете сделать что-то вроде этого, на ваш взгляд:

+0

Q не определен? – user2387035

+0

Вам нужно импортировать Q :) 'из django.db.models import Q' – karthikr

+0

Да, извините, этот метод работает благодаря – user2387035

1

Фильтр должен быть методом в MessageManager. Смотрите здесь: https://docs.djangoproject.com/en/dev/topics/db/managers/

+0

Я попытался это раньше, поставив метод в классе MessageManager то в моей модели функции: объектов = MessageManager() , а затем, на мой взгляд: msg_list = Message.objects на странице результаты не отфильтрованы – user2387035