Foros del Web » Programando para Internet » Python »

No puedo realizar migraciones en Django y Mysql. Error de AutoField!

Estas en el tema de No puedo realizar migraciones en Django y Mysql. Error de AutoField! en el foro de Python en Foros del Web. Buenas. La verdad, estoy aprendiendo django y he tenido muchos problemas a pesar de los fácil que es, principalmente con base de datos y migraciones. ...
  #1 (permalink)  
Antiguo 28/03/2016, 08:50
 
Fecha de Ingreso: marzo-2016
Ubicación: Osorno
Mensajes: 1
Antigüedad: 1 año, 8 meses
Puntos: 0
Exclamación No puedo realizar migraciones en Django y Mysql. Error de AutoField!

Buenas.
La verdad, estoy aprendiendo django y he tenido muchos problemas a pesar de los fácil que es, principalmente con base de datos y migraciones.

Tengo lo siguiente en models.py

from __future__ import unicode_literals
from django.db import models
from django.contrib import admin
from django.contrib import *
from tinymce import models as tinymce_models
from PIL import Image
from django.contrib.auth.models import User


ESTADO_VISIBLE = [1,2]

class ManejadorPost(models.Manager):
def get_query_set(self):
default_queryset = super(ManejadorPost, self).get_query_set()
return default_queryset.filter(status__in=ESTADO_VISIBLE)



class Categorias(models.Model):
nombre = models.CharField(max_length=50)
slug = models.SlugField(max_length=50, unique=True, null=True)
descripcion = models.TextField()

creada_en = models.DateTimeField(auto_now_add=True)
actualizada_al = models.DateTimeField(auto_now=True)

class BlogPost(models.Model):
ESTADOS=((1,"Publicado"), (2, 'Archivado'), (3,'Nesecita editarse'), (4,'Nesecita aprobacion'))
status = models.IntegerField(choices=ESTADOS,default=4)
objetos_panel = models.Manager()
objects = ManejadorPost()
title=models.CharField(max_length=150)
author = models.ForeignKey(User)
time = models.DateTimeField(auto_now_add=True)
categorias_post = models.ManyToManyField(Categorias)
body = tinymce_models.HTMLField()
imagen = models.ImageField(upload_to = "photos")


La situación es que, al migrar (python manage.py migrate) me sale el siguiente error:
the databases backend does not accept 0 as a ' valueError: The databases backend does not accept 0 as value for AutoField.


La verdad, espero me ayuden porque llevo días intentando saber qué ocasiona tal error. Quizá es algo super sencillo, pero yo no sé.

Gracias!
  #2 (permalink)  
Antiguo 29/03/2016, 10:41
 
Fecha de Ingreso: marzo-2016
Mensajes: 3
Antigüedad: 1 año, 8 meses
Puntos: 0
Respuesta: No puedo realizar migraciones en Django y Mysql. Error de AutoField!

Tus modelos no tiene llaves primarias, si no me equivoco debería de llevar algo como: categoria_id = models.AutoField(primary_key=True), así con cada modelo.

Espero te ayude en algo,
Saludos!
  #3 (permalink)  
Antiguo 03/04/2016, 12:45
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 12 años, 8 meses
Puntos: 1360
Respuesta: No puedo realizar migraciones en Django y Mysql. Error de AutoField!

Django genera automática las llaves primarias.

El problema aqui es que tratas de crear una llave foranea y por default si no existe le trata de poner un valor en la migración (ese valor resulta ser cero) y como mysql no soporta 0 en las fk por eso te da ese error. Mi recomendación es "usa postgres en lugar de mysql" si por alguna razón no puedes entonces trata de cambiar el script de migración de 0 a None o a 1.

Etiquetas: django, mysql+db, python3
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:00.