Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proxy Model Support - Creating base class and querying for proxy model does not return results #390

Open
Eluzive opened this issue Jun 27, 2019 · 3 comments

Comments

@Eluzive
Copy link

Eluzive commented Jun 27, 2019

Hello,

First off thanks for creating this package!

I am running into an issue now where we needed to create two different admin pages and creating proxy models seems like a good idea to use the same model have this separation or grouping. However, when registering the proxy models to their own separate ModelAdmins, the get_queryset() returns an empty set and results are not shown.

I've posted on SO

When I tried creating the object using the regular Django Model class, I am able to query the proxy model and get the created object.

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

class MyPerson(Person):
    class Meta:
        proxy = True

    def do_something(self):
        # ...
        pass
>>> p = Person.objects.create(first_name="foobar")
>>> p
<Person: Person object (4)>
>>> MyPerson.objects.all()
<QuerySet [<MyPerson: MyPerson object (4)>]>

However, when I use the PolymorphicModel and query for proxy model, the queryset is empty.


class Person(PolymorphicModel):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
>>> p = Person.objects.create(first_name="foobar")
>>> MyPerson.objects.all()
<PolymorphicQuerySet []>

Shouldn't we expect the Queryset to contain the Person object we created?

@thejpanganiban
Copy link

We're also encountering this issue. :(

Any updates on this?

@ParikhKadam
Copy link

Any updates??

@emyller
Copy link

emyller commented Apr 21, 2022

This is by design. For now you can work around this by overriding the manager's get_queryset:

class MyModelManager(PolymorphicManager):
    def get_queryset(self):
        qs = self.queryset_class(self.model, using=self._db, hints=self._hints)
        return qs


class MyModel(models.Usuario):
    objects = MyModelManager()

    class Meta:
        proxy = True

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants