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 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。
对于以后遇到这个问题的人:
- 删除所有links_ *数据库中的表(应用程序被称为链接)
-
通过执行以下操作删除链接应用程序的所有迁移:
from django.db.migrations.recorder import MigrationRecorder
MigrationRecorder.Migration.objects.filter(app ='links')。delete()
-
使用
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:
- Delete all links_* tables from the database (app was called 'links')
Delete all migrations for the 'links' app by doing:
from django.db.migrations.recorder import MigrationRecorder MigrationRecorder.Migration.objects.filter(app='links').delete()
Migrated forward with
manage.py migrate
这篇关于Django,ManyToManyField - ProgrammingError:关系foo_bar不存在。在迁移中认识到,尽管关系永远不会被创建的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!