3

我正在尝试使用模型方法过滤记录,但不确定如何在视图中实现它。

是应该这样,还是完全在其他庄园的视野中?

下面是我的模型:

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
4

2 回答 2

2

由于您需要过滤查询集对象,因此您可以在视图中执行以下操作:

from django.db.models import Q
matches = ['cat', 'kitty', 'meow']
messages = Message.objects.filter(reduce(operator.or_, (Q(message__contains=match) for match in matches)))  #Or use icontains if you want a case insensitive match. 
于 2013-06-22T11:10:27.307 回答
1

过滤器应该是 MessageManager 的一个方法。见这里:https ://docs.djangoproject.com/en/dev/topics/db/managers/

于 2013-06-22T11:08:02.453 回答