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) 次の方法で、クエリセットからグループを削除します。

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. filterと not in を使用する代わりに、 excludeと inを使用します。
于 2012-10-16T22:18:23.707 に答える