Django 基于布尔值的模型管理器过滤导致整数错误
我在基于布尔字段的模型上使用管理器来过滤站点上显示的对象,同时显示管理中未过滤的所有对象。这个想法是,用户的位置正在提交,但我不希望他们显示在网站上,直到他们已经被验证为一个有效的位置,根据我的标准 型号.pyDjango 基于布尔值的模型管理器过滤导致整数错误,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
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中工作,干杯!