2

我正在使用 Django 框架、appengine 数据库。

我的模型代码是:

class Group(models.Model):
    name = models.CharField(max_length=200)
    ispublic = models.BooleanField()
    logo = models.CharField(max_length=200)
    description = models.CharField(max_length=200)
    groupwebsite = models.CharField(max_length=200)
    owner = models.ForeignKey('profile')


class Group_members(models.Model):
    profile = models.CharField(max_length=200)
    group = models.ForeignKey('group')

我正在查询Group_members删除组。我的查询如下:

groups = Group_members.objects.filter(Q(profile=profile.id),~Q(group__in=group_id)

信息:

  1. group_id = ['128','52']
  2. group是组模型的外键

我的问题是当我运行这个查询时,它会抛出 Database error: Lookup type 'in' can't be negated

我也使用__in它执行了查询工作正常,但不适用于外键。

提前致谢

4

2 回答 2

2

我认为您试图在单个过滤器中过滤配置文件 ID 并删除 group_id 中的组

groups = Group_members.objects.filter(Q(profile=profile.id),~Q(group__in=group_id)

试试这个:

1)首先过滤配置文件形式 group_member :

groups = Group_members.objects.filter(profile=profile.id)

2)通过以下方式从Queryset中删除组:

groupId = [x.group.id for x in groups if x.group.id not in group_id]

希望这会给你完美的结果

于 2012-10-25T05:17:46.597 回答
1

2个建议。

  1. 使用 ~Q(group__ pk__in=group_id)
  2. 不要使用过滤器而不是在,而是使用排除和输入
于 2012-10-16T22:18:23.707 回答