Skip to content

Instantly share code, notes, and snippets.

@jtiai
Last active August 29, 2015 14:07
Show Gist options
  • Save jtiai/a96f94ae3fe4fe70674b to your computer and use it in GitHub Desktop.
Save jtiai/a96f94ae3fe4fe70674b to your computer and use it in GitHub Desktop.
class MyManager(models.Manager):
use_for_related_fields = True
def get_query_set(self):
return super(MyManager, self).get_query_set().filter(is_deleted=False)
class MyModel(gis_models.Model):
is_deleted = models.BooleanField(default=False, db_index=True)
objects = FlatManager()
all_objects = models.Manager()
class MyModelProxy(MyModel):
objects = models.Manager()
class Meta:
proxy = True
# i'm using sql alchemy here, to get objects from another database
for obj in self.session.query(ModelLegacy).filter(ModelLegacy.acc_id == acc.id):
try:
new_object = MyModelProxy.all_objects.get(created=obj.date_added)
except MyModelProxy.DoesNotExist:
new_object = MyModelProxy(created=obj.date_added)
new_object.is_deleted = obj.deleted
new_object.user = new_user
new_object.save()
# now here, the second time i run this script, that happens:
django.db.utils.IntegrityError: duplicate key value violates unique constraint "myapp_mymodel_pkey"
DETAIL: Key (id)=(5453) already exists.
# if i follow it with debugging:
-> new_object.save()
(Pdb) new_object
<MyModel: asdf>
(Pdb) new_object.pk
5453
(Pdb) new_object.save()
*** DoesNotExist: Flat matching query does not exist.
# if i follow this further:
https://github.com/django/django/blob/master/django/db/models/base.py#L715
(Pdb) cls._base_manager.count()
608
(Pdb) cls.all_objects.count()
632
# so i think, djano uses 'objects' manager as _base_manager in the background
# and can't find my is_deleted model
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment