Is quering Provider model significantly less efficient using this pattern?
class Provider(models.Model):
def __new__(cls, url, *args, **kwargs):
if 'google' in url:
return object.__new__(Google)
elif 'bing' in url:
return object.__new__(Bing)
url = models.CharField(primary_key=True)
sth = models.CharField()
class Google(Provider):
def do_sth(self):
self.sth = 'sth'
self.save()
class Bing(Provider):
def do_sth(self):
self.sth = 'sth else'
self.save()
spam = Provider.objects.get_or_create(url=spam_url)
spam.__class__
<class '__main__.Google'>
eggs = Provider.objects.get_or_create(url=eggs_url)
spam.__class__
<class '__main__.Yahoo'>