Django, ManyToManyField – ProgrammingError: la relación foo_bar no existe. Reconocido en las migraciones, aunque la relación nunca se crea.

En este caso, “foo_bar” es en realidad “links_userprofile_favorite_feeds”.

El problema es que cuando entro en el shell manage.py:

administrar.py shell

from django.contrib.auth.models import User from feeds.models import feed p = User.objects.get(username='myuser') p.save() q = Feed.objects.get(title='myfeed') q.save() p.userprofile.favorite_feed.add(q) 

yo obtengo

el error:

 ProgrammingError: relation "links_userprofile_favorite_feeds" does not exist LINE 1: ..."links_userprofile_favorite_feeds"."feed_id" FROM "links_use... 

Aquí están los archivos relevantes y el traceback:

links.models.py

 class UserProfile(models.Model): user = models.OneToOneField(User,unique=True) bio = models.TextField(null=True) thumbnail = models.ImageField(upload_to="uploaded_files/") favorite_feeds = models.ManyToManyField(Feed) 

feeds.models.py

 class Feed(models.Model): title = models.CharField(max_length=25) slug = models.SlugField(max_length=25) def save(self, *args, **kwargs): if not self.slug: #Newly created object, so set slug self.slug = slugify(self.title) super(Feed,self).save(*args,**kwargs) def __unicode__(self): return self.title class Meta: ordering = ('title',) 

La relación parece estar presente en la migración, pero manage.py syncdb, manage.py makemigrations, manage.py migrate , no funcionan (no hay migraciones para aplicar).

¿Alguien puede ayudar? Estoy deseando crear la relación "links_userprofile_favorite_feeds."

Fijo.

Para aquellos con este problema en el futuro:

  1. Eliminar todas las tablas links_ * de la base de datos (la aplicación se llamó ‘enlaces’)
  2. Elimine todas las migraciones para la aplicación ‘enlaces’ haciendo:

     from django.db.migrations.recorder import MigrationRecorder MigrationRecorder.Migration.objects.filter(app='links').delete() 
  3. Migrado hacia adelante con manage.py migrate