2011-01-16 26 views
20

He utilizado la función get_or_create en mis modelos en Django. Esta función devuelve dos valores. Uno es el objeto mismo y el otro un indicador booleano que indica si se recuperó un objeto existente o si se creó uno nuevo.¿Cómo devuelve dos valores la función get_or_create en Django?

Normalmente, una función puede devolver un único valor o una colección de valores como tuple, list o un diccionario.

¿Cómo devuelve dos valores una función como get_or_create?

+4

Devuelve una tupla en realidad ... – shanyu

+1

devuelve una tupla con dos elementos '' return (is_exit, object) ' – mouad

+0

Pruebe esto:' a = 1, 2; tipo de impresión (a) '. Es una tupla de hecho. – TryPyPy

Respuesta

29

get_or_create() simplemente devuelve una tupla de los dos valores. A continuación, puede utilizar sequence unpacking para unir las dos entradas de tupla de dos nombres, al igual que en el ejemplo documentation:

p, created = Person.objects.get_or_create(
    first_name='John', last_name='Lennon', 
    defaults={'birthday': date(1940, 10, 9)}) 
4

devuelve una tupla. Parece que sabía que las funciones podrían hacer esto, ¡pero no es que pueda asignar los resultados directamente a dos variables!

Consulte la documentación de Django para get_or_create:

# Returns a tuple of (object, created), where object is the retrieved 
# or created object and created is a boolean specifying whether a new 
# object was created. 

obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon', 
        defaults={'birthday': date(1940, 10, 9)}) 
3

El uso de tuplas/desempaquetado de tuplas es a menudo considerado como un quite "pythonic" way de devolver más de un valor.

Cuestiones relacionadas