ブールフィールドに基づくモデルでマネージャを使用して、管理者のすべてのオブジェクトをフィルタなしで表示しながら、サイトに表示されているオブジェクトをフィルタリングしています。アイデアはユーザーが場所を送信していますが、条件に基づいて有効な場所として確認されるまでサイトに表示したくないということです。IntegrityErrorを引き起こすBooleanでのモデルマネージャのフィルタリング
models.py
class LocationManager(models.GeoManager):
def get_query_set(self):
return super(LocationManager, self).get_query_set().filter(verified=True)
class Location(models.Model):
verified = models.BooleanField(default=False)
objects = LocationManager()
admin_objects = models.Manager()
admin.py管理者に
class LocationAdmin(admin.OSMGeoAdmin):
def queryset(self, request):
qs = self.model.admin_objects.get_query_set()
return qs
admin.site.register(Location, LocationAdmin)
、私はレコードに行くとTrueに検証ブールをチェックし、キーを押し、保存、I IntegrityErrorを取得する:
duplicate key value violates unique constraint "localshare_location_pkey"
これは、デフォルトがTrueで、Falseにフィルタリングされたときに別のプロジェクトで動作しました。私はPostgresを使用しています。誰もがなぜこれが動作していないか、これを達成するためのより良い方法のための提案を持っているか分かっていますか?
あなたは 'フィルタ()'句を削除した場合、それは動作しますか?あなたのデータベース構造について何か変更し、dbを正しく同期させませんでしたか? –
@lazerscience、はい、それはフィルタなしで動作します。私はDBの移行のために南を使用しており、dbは最新です。 – knuckfubuck
例外がスローされたところでトレースバックを投稿できますか? –