2009-11-28 33 views
22

que tiene este modeloPermitir nulo en clave externa al usuario. Django

class Vacancy(models.Model): 
    user = models.ForeignKey(User, null=True, blank=True, default = None) 
    name = models.CharField(max_length=64) 

Cuando admin intento para conformar una vacante sin que un usuario. Y arroja un error "club_vacancy.user_id puede no ser NULL". ¿Estoy haciendo algo mal?

Respuesta

33

club_vacancy.user_id may not be NULL

se parece mucho a un error de la base de datos, en lugar de Django.

Parece más probable que haya agregado null=True después de ejecutar manage.py syncdb. Tendrá que modificar su esquema de base de datos para permitir valores nulos en esa columna.

+2

bueno, ejecuté syncdb antes y después de agregar null = true. ¿Cómo debo modificar mi db? – barin

+5

syncdb no modifica las tablas que ya existen. Suelta la tabla y ejecuta syncdb nuevamente, o modifica tu base de datos manualmente, o utiliza una aplicación de migraciones. –

+6

migrations app like 'south' – panchicore

-5

que necesita para restablecer la tabla de base de datos (ya que solo syncdb no actualiza los campos que se crean con alredy nula = false)

./manage.py restablecer your_app

o si hay algunos datos que no desea perder el uso de comandos SQL para eliminar la bandera NOT NULL

2

Aparte del sur, otra opción es usar django evolution para cambios de esquema.

http://code.google.com/p/django-evolution/

instalarlo antes de hacer cambios db. A continuación, ejecute

python manage.py evolve --hint --execute 

Asegúrese de que si se añade un nuevo campo, que permite valores nulos (null=True) o bien evolucionar le dará un mensaje de error.

+0

¿Qué sucede si no quiero permitir que el nuevo campo sea nulo? ¿Qué debo hacer? – barin

+0

Las versiones más nuevas de Django tienen migraciones incorporadas. – Flimm

Cuestiones relacionadas