Django“没有这样的列:mains_profile_friends.user_id”
Posted
技术标签:
【中文标题】Django“没有这样的列:mains_profile_friends.user_id”【英文标题】:Django "no such column: mains_profile_friends.user_id" 【发布时间】:2021-04-03 21:53:15 【问题描述】:我正在阅读 Django 教程,并在我的博客应用程序中尝试在浏览器中(在本地主机中)打开朋友页面时遇到此错误。
我使用 Django==3.1.2。
views.py
@login_required
def friend_list(request):
p = request.user.profile
friends = p.friends.all()
context = 'p':p,'friends':friends
return render(request, 'mains/friends.html' , context )
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE,default='',unique=True)
full_name = models.CharField(max_length=100,default='')
friends = models.ManyToManyField(User, related_name='friends',blank=True,default='',null=True)
friends.html
% block content %
<div class="container">
<div class="row">
<div class="col-md-8">
% if friends %
<div class="card card-signin my-5">
<div class="card-body">
% for user_p in friends %
<a href=" user_p.get_absolute_url "> user </a>
<a class="text-dark" href=" user_p.get_absolute_url "
><b> user_p </b></a>
<br /><br />
% endfor %
% endif %
% endblock content %
urls.py
path('friends/', views.friend_list, name='friend_list'),
问题
当我在浏览器中打开 friends.html 时,它给了我一个错误:no such column: mains_profile_friends.user_id
我尝试过的。
1)。我已经替换了所有与friend_list
视图相关的名称。
2)。我也迁移到了终端。
帮帮我!我将非常感谢您的帮助。提前谢谢你。
【问题讨论】:
mains:delete_friend 应该通向哪里? 您确实发生了一些迁移冲突,只需通过删除所有迁移文件但保留 init.py、删除 sqlite3.db、最后 makemigrations && migrate 来重新启动数据库 @ZeyadShaban,我已经删除了除 init.py 之外的所有迁移,但没有任何反应。 你删除了 sqlite3.db 吗?你也重新迁移了(pytohn3 manage.py makemigrations python3 manage.py migrate) 现在是python manage.py dumpdata > seed.json
。
【参考方案1】:
您必须删除您的数据库,然后删除迁移,但将 init.py 保留在每个应用程序文件夹的迁移文件夹中,然后最后使用 python3 manage.py makemigrations 然后 python3 manage.py migrate 再次迁移。如果您有不想丢失的数据,请获取您拥有的数据的 JSON 副本,我认为它是使用 python3 manage.pydumb > seed.json 完成的,我不确定
【讨论】:
以上是关于Django“没有这样的列:mains_profile_friends.user_id”的主要内容,如果未能解决你的问题,请参考以下文章