【问题标题】:Django, ManyToManyField - ProgrammingError: relation foo_bar does not exist. Recognized in migrations, though relation is never createdDjango,ManyToManyField - ProgrammingError:关系 foo_bar 不存在。在迁移中得到认可,尽管从未创建关系
【发布时间】:2015-03-03 18:06:19
【问题描述】:

在这种情况下,“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,都不起作用(没有要应用的迁移)。

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

【问题讨论】:

  • 这显然是一个数据库问题,所以你要么没有创建迁移,要么在应用程序目录中没有迁移文件夹,或者应用程序没有在 INSTALLED_APP 注册。并且不要使用syncdb。
  • @ruddra 迁移显示在上面的迁移文件中。所有必要的应用程序都已安装。为什么我不应该使用 syncdb?

标签: python sql django postgresql django-models


【解决方案1】:

固定。

对于以后遇到这个问题的人:

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

    from django.db.migrations.recorder import MigrationRecorder
    MigrationRecorder.Migration.objects.filter(app='links').delete()
    
  3. 使用manage.py migrate向前迁移

【讨论】:

    猜你喜欢
    • 2018-10-06
    • 2017-07-01
    • 2019-02-04
    • 2017-03-25
    • 2016-04-11
    • 2016-10-01
    • 2018-11-25
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多