Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 基于布尔值的模型管理器过滤导致整数错误_Django_Postgresql_Django Models_Django Admin_Geodjango - Fatal编程技术网

Django 基于布尔值的模型管理器过滤导致整数错误

Django 基于布尔值的模型管理器过滤导致整数错误,django,postgresql,django-models,django-admin,geodjango,Django,Postgresql,Django Models,Django Admin,Geodjango,我在基于布尔字段的模型上使用管理器来过滤站点上显示的对象,同时显示管理中未过滤的所有对象。这个想法是,用户的位置正在提交,但我不希望他们显示在网站上,直到他们已经被验证为一个有效的位置,根据我的标准 型号.py class LocationManager(models.GeoManager): def get_query_set(self): return super(LocationManager, self).get_query_set().filter(verifi

我在基于布尔字段的模型上使用管理器来过滤站点上显示的对象,同时显示管理中未过滤的所有对象。这个想法是,用户的位置正在提交,但我不希望他们显示在网站上,直到他们已经被验证为一个有效的位置,根据我的标准

型号.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()
class LocationAdmin(admin.OSMGeoAdmin):
    def queryset(self, request):
        qs = self.model.admin_objects.get_query_set()
        return qs

admin.site.register(Location, LocationAdmin)
class Location(models.Model):
    verified = models.BooleanField(default=False)
    admin_objects = models.Manager()
    objects = LocationManager()
admin.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()
class LocationAdmin(admin.OSMGeoAdmin):
    def queryset(self, request):
        qs = self.model.admin_objects.get_query_set()
        return qs

admin.site.register(Location, LocationAdmin)
class Location(models.Model):
    verified = models.BooleanField(default=False)
    admin_objects = models.Manager()
    objects = LocationManager()
在admin中,当我进入记录并将验证的布尔值检查为True并按save时,我得到一个IntegrityError:

duplicate key value violates unique constraint "localshare_location_pkey"

当默认值为True时,这在另一个项目上起作用,而我过滤了False。我正在使用Postgres。是否有人知道为什么这样做不起作用,或者有更好的方法来实现这一点的建议?

对于任何感兴趣的人,这是django IRC频道提供的答案。默认情况下,管理员查找第一个管理器。我所要做的就是改变他们在模型中出现的顺序。即使admin.py覆盖queryset并指向另一个管理器,顺序也很重要

固定型号.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()
class LocationAdmin(admin.OSMGeoAdmin):
    def queryset(self, request):
        qs = self.model.admin_objects.get_query_set()
        return qs

admin.site.register(Location, LocationAdmin)
class Location(models.Model):
    verified = models.BooleanField(default=False)
    admin_objects = models.Manager()
    objects = LocationManager()

如果删除
filter()
子句,是否有效?您是否更改了数据库结构,但没有正确同步数据库?@lazerscience,是的,它在没有过滤器的情况下工作。我正在使用south进行db迁移,db是最新的。你能在抛出异常的地方发布一个回溯吗?一些核心的东西就在那里,伙计!仍然在1.7中工作,干杯!