我有两个相互关联的多对多模型。我想根据另一个字段User筛选其中一个字段Message。与第一条消息上的字段相比,在处创建了\u。编辑\u日期。
class Message(Model):
content = CharField(max_length=512, blank=True, null=True)
created_at = models.DateTimeField(blank=True, null=True)
edit_date = models.DateTimeField(blank=True, null=True)
users = models.ManyToManyField('User', related_name='message_user')
class User(Model):
name = content = CharField(max_length=48)
created_at = models.DateTimeField(blank=True, null=True)
现在,我通过在两个模型上循环并在循环中比较它们来实现这一点,这很慢。
message_query = Message.objects.none()
for user_name, created_at_date in Users.objects.filter(name='Tina').values_list('id', 'created_at').iterator():
message_query.add(Q(
users=user_id,
edit_date__gte=created_at_date,
), Q.OR)
messages = Message.objects.filter(message_query)
是否有任何方法可以为我试图在查询中筛选的项目创建筛选器?