我正在尝试使用模型方法过滤记录,但我不确定如何在视图中实现它。
应该以这种方式完成,还是完全在其他庄园的视野中完成?
以下是我的模型:
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 :(得分: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.
答案 1 :(得分:1)
过滤器应该是MessageManager的方法。见这里:https://docs.djangoproject.com/en/dev/topics/db/managers/