我在基于布尔字段的模型上使用管理器来过滤站点上显示的对象,同时在管理员中显示未过滤的所有对象。这个想法是用户正在提交位置,但我不希望他们在网站上显示,直到他们根据我的标准被验证为有效位置。
模型.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()
管理员.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。有谁知道为什么这不起作用或有更好的方法来实现这一目标的建议?