2010-04-16 15 views
6

Esto parece muy básico y que debe estar pasando algo, pero aquí va de todos modos ...Django ForeignKey creado vacío?

Con dos modelos de este modo:

class School(models.Model): 
    name = models.CharField("Official School Name", max_length=128) 
    address = models.TextField("Address of the School", max_length=256) 
    mascot = models.CharField("Name of the School Mascot", max_length=128) 

class StudentProfile(models.Model): 
    name = models.CharField(max_length=128) 
    school = models.ForeignKey(School) 

Si el estudiante se crea antes de la escuela, ¿Cómo administro 'escuela' un valor vacío predeterminado? ¿Es en blanco o nulo o qué?

Gracias!

Respuesta

8

null si desea que la base de datos permita que la relación sea nula, blank si no desea que el sitio de administración de Django se queje de que sea nulo.

De la documentación en "blanco":..

"Tenga en cuenta que esto es diferente a null es puramente relacionados con bases de datos, mientras que en blanco es relacionados con la validación-Si un campo tiene espacio en blanco = True, la validación de Django el sitio de administración permitirá la entrada de un valor vacío. Si un campo tiene en blanco = Falso, se requerirá el campo ".

En resumen, es probable que desee ambos.

+0

Sí, normalmente configuro un FK para ambos si es opcional. –

+0

Ok, eso funciona y lo había intentado antes. Diría manage.py flush pero evidentemente eso no es suficiente para actualizar el db. La única forma de lograr que cambie fue eliminar el archivo db y ejecutar manage.py syncdb. – Scott

+2

syncdb no cambia las tablas, solo las crea. Si desea modificar el modelo, debe hacerlo manualmente o utilizar algo como http://south.aeracode.org/ – synic

Cuestiones relacionadas