68 votos

Escrito a __init__ de la función a ser utilizado en el modelo de django

Estoy tratando de escribir un __init__ función para uno de mis modelos para que yo pueda crear un objeto haciendo

p = User('name','email')

Cuando escribo el modelo, tengo

    def __init__(self, name, email, house_id, password):
            models.Model.__init__(self)
            self.name = name
            self.email = email

Esto funciona, y puedo guardar el objeto en la base de datos, pero cuando lo hago, 'Usuario.objetos.todos()', que no tire nada a menos que me saca de mi __init__ función. Alguna idea?

102voto

Baldu Puntos 3374

Confiando en Django integrado en la funcionalidad y pasar parámetros con nombre sería la forma más sencilla de ir.

p = User(name="Fred", email="fred@example.com")

Pero si estás en el ahorro de algunas pulsaciones de teclas, me gustaría sugerir la adición de una estática conveniencia método a la clase en vez de jugar con el inicializador.

# In User class declaration
@classmethod
def create(cls, name, email):
  return cls(name=name, email=email)

# Use it
p = User.create("Fred", "fred@example.com")

43voto

Django espera la firma de un modelo del constructor (self, *args, **kwargs), o algunos facsímil razonable. Su cambio de la firma a algo totalmente incompatible ha roto.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X