I'm trying to write an
__init__ function for one of my models so that I can create an object by doing:
p = User('name','email')
When I write the model, I have:
def __init__(self, name, email, house_id, password): models.Model.__init__(self) self.name = name self.email = email
This works and I can save the object to the database, but when I do
User.objects.all(), it doesn't pull anything up unless I take out my
__init__ function. Any ideas?
Relying on Django's built-in functionality and passing named parameters would be the simplest way to go.
p = User(name="Fred", email="firstname.lastname@example.org")
But if you're set on saving some keystrokes, I'd suggest adding a static convenience method to the class instead of messing with the initializer.
# In User class declaration @classmethod def create(cls, name, email): return cls(name=name, email=email) # Use it p = User.create("Fred", "email@example.com")
Django expects the signature of a model's constructor to be
(self, *args, **kwargs), or some reasonable facsimile. Your changing the signature to something completely incompatible has broken it.