Django,ManyToManyField - ProgrammingError:关系foo_bar不存在。在迁移中认识到,尽管关系永远不会被创建 [英] Django, ManyToManyField - ProgrammingError: relation foo_bar does not exist. Recognized in migrations, though relation is never created

查看:71
本文介绍了Django,ManyToManyField - ProgrammingError:关系foo_bar不存在。在迁移中认识到,尽管关系永远不会被创建的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



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



manage.py shell

 从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:relationlinks_userprofile_favorite_feeds不存在
LINE 1:... links_userprofile_favorite_feeds。feed_idFROMlinks_use ...

以下是相关的文件和追溯: / p>

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 =模特儿.ManyToManyField(Feed)



feeds.models.py


$ b $
title = models.CharField(max_length = 25)
slug = models.SlugField(max_length = 25)$ {pre> class Feed(models.Model) b
$ b def save(self,* args,** kwargs):
如果不是self.slug:
#新创建的对象,所以设置slug
self.slug = slugify(self.title)

super(Feed,self).save(* args,** kwargs)

def __unicode __(self):
return self .title

class Meta:
order =('title',)

关系似乎存在于迁移中,但 manage.py syncdb,manage.py makemigrations,manage.py migrate ,都不起作用(无迁移申请)。



任何人都可以帮忙吗?我想要创建关系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



In this case, "foo_bar" is actually "links_userprofile_favorite_feeds".

The problem is, when I go into manage.py shell:

manage.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)

I get

the error:

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

Here are the relevant files and 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',)

The relation seems to be present in the migration, but manage.py syncdb, manage.py makemigrations, manage.py migrate, all do not work (no migrations to apply).

Can anyone help? I am wanting to create the relation "links_userprofile_favorite_feeds."

解决方案

Fixed.

For those with this problem in the future:

  1. Delete all links_* tables from the database (app was called 'links')
  2. Delete all migrations for the 'links' app by doing:

    from django.db.migrations.recorder import MigrationRecorder
    MigrationRecorder.Migration.objects.filter(app='links').delete()
    

  3. Migrated forward with manage.py migrate

这篇关于Django,ManyToManyField - ProgrammingError:关系foo_bar不存在。在迁移中认识到,尽管关系永远不会被创建的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆