繁体   English   中英

Django,ManyToManyField-ProgrammingError:关系foo_bar不存在。 尽管从未建立关系,但已在迁移中得到认可

[英]Django, ManyToManyField - ProgrammingError: relation foo_bar does not exist. Recognized in migrations, though relation is never created

在这种情况下,“ foo_bar”实际上是“ links_userprofile_favorite_feeds”。

问题是,当我进入manage.py shell时:

manage.py外壳

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)

我懂了

错误:

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

以下是相关文件和回溯:

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',)

该关系似乎已存在于迁移中,但manage.py syncdb, manage.py makemigrations, manage.py migrate migration均不起作用(无迁移适用)。

有人可以帮忙吗? 我想创建关系"links_userprofile_favorite_feeds."

固定。

对于将来遇到此问题的人:

  1. 从数据库中删除所有links_ *表(应用程序称为“链接”)
  2. 通过执行以下操作,删除“链接”应用程序的所有迁移:

     from django.db.migrations.recorder import MigrationRecorder MigrationRecorder.Migration.objects.filter(app='links').delete() 
  3. 通过manage.py migrate migration向前manage.py migrate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM