ブール フィールドに基づくモデルで Manager を使用して、サイトに表示されるオブジェクトをフィルタリングし、管理者のすべてのオブジェクトをフィルタリングせずに表示しています。アイデアは、ユーザーが場所を送信しているということですが、私の基準に基づいて有効な場所として確認されるまで、それらをサイトに表示したくありません。
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 にチェックして [保存] を押すと、IntegrityError が発生します。
duplicate key value violates unique constraint "localshare_location_pkey"
デフォルトがTrueで、Falseでフィルタリングした場合、これは別のプロジェクトで機能しました。Postgresを使用しています。なぜこれが機能しないのか、またはこれを達成するためのより良い方法について提案がある人はいますか?