So using your tip, I've done this: class Foo1Bar(FooBar): > > objects = TypeAwareManager('foo__type',1) > > class Meta: > proxy= True > > def change_fb(cls): > old_foo = cls.foo > > @property > def new_foo(self): > return Foo1(self.old_foo) if self.old_foo != None else None > > setattr(cls, 'old_foo', old_foo) > setattr(cls, 'foo', new_foo) > > return cls
This way when calling a Foo1Bar the foo attr would be the cast from Foo to Foo1 if it exist. And then in Bar I've done what you said: class Bar(models.Model): > "a class that has connection to other proxies" > foos = > models.ManyToManyField('my_app.Foo',related_name='bars_list',through='my_app.FooBar') > > @property > def foo1bar_list(self): > qr = self.foobar_list.filter(foo__type=1) > qr.model = Foo1Bar > return qr > > def __unicode__(self): > return "%s" %(self.pk) And this is aparently working, but I still want to make some more tests. Em domingo, 22 de abril de 2012 14h10min33s UTC-3, Arruda escreveu: > > Thanks, I saw that .model thing too, but was also unsure about it... I > might just test it. > > Em sábado, 21 de abril de 2012 19h04min30s UTC-3, akaariai escreveu: >> >> > Should I create this many-to-many table as a normal model(no proxy) and >> set >> > the foo foreingkey to Foo1 instead of Foo? >> > Or should I use only FooBar as many-to-many and create some specific >> > queries that would convert ALL the returned foo objects as Foo1 >> instance? >> >> I am not sure if I am answering your question... But here is a dirty >> hack to try: >> qs = SomeModel.objects.all() >> qs.model = SomeModelProxy >> print list(qs) >> >> You should get proxy model instances from the queryset. >> >> Now, I just quickly tested this a minute ago, and it seems to work in >> a very simple cases. The above uses internals of Django's ORM in a way >> it was not designed to be used. So mandatory warnings: If anything >> breaks, though luck. A minor version upgrade could break your code >> without any notice. >> >> So, in the m2m case I guess I would create a property: >> class SomeModel: >> foos = M2M(Foo) >> >> def _foo1s(self): >> qs = self.foos.all() >> qs.model = Foo1 >> return qs >> foo1s = property(_foo1s) >> >> The above might just work. Or not. Once again, be very cautious if you >> use any of the above. >> >> - Anssi > > > Em sábado, 21 de abril de 2012 19h04min30s UTC-3, akaariai escreveu: >> >> On Apr 21, 8:35 pm, Arruda <felipe.arruda.pon...@gmail.com> wrote: >> > Should I create this many-to-many table as a normal model(no proxy) and >> set >> > the foo foreingkey to Foo1 instead of Foo? >> > Or should I use only FooBar as many-to-many and create some specific >> > queries that would convert ALL the returned foo objects as Foo1 >> instance? >> >> I am not sure if I am answering your question... But here is a dirty >> hack to try: >> qs = SomeModel.objects.all() >> qs.model = SomeModelProxy >> print list(qs) >> >> You should get proxy model instances from the queryset. >> >> Now, I just quickly tested this a minute ago, and it seems to work in >> a very simple cases. The above uses internals of Django's ORM in a way >> it was not designed to be used. So mandatory warnings: If anything >> breaks, though luck. A minor version upgrade could break your code >> without any notice. >> >> So, in the m2m case I guess I would create a property: >> class SomeModel: >> foos = M2M(Foo) >> >> def _foo1s(self): >> qs = self.foos.all() >> qs.model = Foo1 >> return qs >> foo1s = property(_foo1s) >> >> The above might just work. Or not. Once again, be very cautious if you >> use any of the above. >> >> - Anssi > > > Em sábado, 21 de abril de 2012 19h04min30s UTC-3, akaariai escreveu: >> >> On Apr 21, 8:35 pm, Arruda <felipe.arruda.pon...@gmail.com> wrote: >> > Should I create this many-to-many table as a normal model(no proxy) and >> set >> > the foo foreingkey to Foo1 instead of Foo? >> > Or should I use only FooBar as many-to-many and create some specific >> > queries that would convert ALL the returned foo objects as Foo1 >> instance? >> >> I am not sure if I am answering your question... But here is a dirty >> hack to try: >> qs = SomeModel.objects.all() >> qs.model = SomeModelProxy >> print list(qs) >> >> You should get proxy model instances from the queryset. >> >> Now, I just quickly tested this a minute ago, and it seems to work in >> a very simple cases. The above uses internals of Django's ORM in a way >> it was not designed to be used. So mandatory warnings: If anything >> breaks, though luck. A minor version upgrade could break your code >> without any notice. >> >> So, in the m2m case I guess I would create a property: >> class SomeModel: >> foos = M2M(Foo) >> >> def _foo1s(self): >> qs = self.foos.all() >> qs.model = Foo1 >> return qs >> foo1s = property(_foo1s) >> >> The above might just work. Or not. Once again, be very cautious if you >> use any of the above. >> >> - Anssi > > > Em sábado, 21 de abril de 2012 19h04min30s UTC-3, akaariai escreveu: >> >> On Apr 21, 8:35 pm, Arruda <felipe.arruda.pon...@gmail.com> wrote: >> > Should I create this many-to-many table as a normal model(no proxy) and >> set >> > the foo foreingkey to Foo1 instead of Foo? >> > Or should I use only FooBar as many-to-many and create some specific >> > queries that would convert ALL the returned foo objects as Foo1 >> instance? >> >> I am not sure if I am answering your question... But here is a dirty >> hack to try: >> qs = SomeModel.objects.all() >> qs.model = SomeModelProxy >> print list(qs) >> >> You should get proxy model instances from the queryset. >> >> Now, I just quickly tested this a minute ago, and it seems to work in >> a very simple cases. The above uses internals of Django's ORM in a way >> it was not designed to be used. So mandatory warnings: If anything >> breaks, though luck. A minor version upgrade could break your code >> without any notice. >> >> So, in the m2m case I guess I would create a property: >> class SomeModel: >> foos = M2M(Foo) >> >> def _foo1s(self): >> qs = self.foos.all() >> qs.model = Foo1 >> return qs >> foo1s = property(_foo1s) >> >> The above might just work. Or not. Once again, be very cautious if you >> use any of the above. >> >> - Anssi > > > Em sábado, 21 de abril de 2012 19h04min30s UTC-3, akaariai escreveu: >> >> On Apr 21, 8:35 pm, Arruda <felipe.arruda.pon...@gmail.com> wrote: >> > Should I create this many-to-many table as a normal model(no proxy) and >> set >> > the foo foreingkey to Foo1 instead of Foo? >> > Or should I use only FooBar as many-to-many and create some specific >> > queries that would convert ALL the returned foo objects as Foo1 >> instance? >> >> I am not sure if I am answering your question... But here is a dirty >> hack to try: >> qs = SomeModel.objects.all() >> qs.model = SomeModelProxy >> print list(qs) >> >> You should get proxy model instances from the queryset. >> >> Now, I just quickly tested this a minute ago, and it seems to work in >> a very simple cases. The above uses internals of Django's ORM in a way >> it was not designed to be used. So mandatory warnings: If anything >> breaks, though luck. A minor version upgrade could break your code >> without any notice. >> >> So, in the m2m case I guess I would create a property: >> class SomeModel: >> foos = M2M(Foo) >> >> def _foo1s(self): >> qs = self.foos.all() >> qs.model = Foo1 >> return qs >> foo1s = property(_foo1s) >> >> The above might just work. Or not. Once again, be very cautious if you >> use any of the above. >> >> - Anssi > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/t-TAznisPNMJ. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.