Django报错:auctions_user_user_permissions表缺失,后台及数据异常
Django项目问题排查
问题概述
修改代码后出现两个问题:
- 无法进入admin面板,报错
no such table: auctions_user_user_permissions - 网站首页无商品数据显示
相关代码
views.py
# item detail page in views.py def item_detail(request, bidid): bid_desc = List.objects.get(pk = bidid, active_bool=True) nowbids = Bidmodel.objects.filter(listb_id = bidid) return render(request, "auctions/item_detail.html",{ "list": bid_desc, "comments" : Comments.objects.filter(listc_id = bidid), "now_bid": minbid(bid_desc.first_bid, nowbids), }) # winner def winner(request): bid_id = request.GET["listid"] nowbids = Bidmodel.objects.filter(listb_id = bid_id) biddesc = List.objects.get(pk = bid_id) maxbid = minbid(biddesc.first_bid, nowbids) try: winner_who = Bidmodel.objects.get(bid = maxbid, listb_id = bid_id) winner_list = List.objects.get(id = bid_id) win = Winner(win_list = winner_list, user = winner_who.user) winners_name = winner_who.user except: winner_list = List.objects.get(first_bid = maxbid, id = bid_id) win = Winner(win_list = winner_list, user = winner_list.user) winners_name = winner_list.user biddesc.active_bool = False biddesc.save() win.save() messages.success(request, f"{winners_name} won {win.win_list.title}.") return redirect("index") # check winner def winner_check(request): try: yourwin = Winner.objects.filter(user = request.user.username) except: yourwin = None return render(request, "auctions/winner_check.html",{ "user_winlist" : yourwin, })
index.html
{% extends "auctions/layout.html" %} {% block body %} <h2>Active Listings</h2> {% if messages %} {% for message in messages %} <div>{{ message }}</div> {% endfor %} {% endif %} <div> {% for item in items %} <div> <img src= {{ item.image.url }} alt = "{{item.title}}"><br> <a>{{ item.title }}</a><br> <a>{{ item.category }}</a><br> <a><a>Frist Bid: </a> {{ item.first_bid }} $ </a><br> <a href="{% url 'item_detail' item.id %}">View Product</a> </div> {% endfor %} </div> {% endblock %}
item_detail.html
{% extends "auctions/layout.html" %} {% block body %} {% if messages %} {% for message in messages %} <div>{{ message }}</div> {% endfor %} {% endif %} <img src= {{ list.image.url }} alt = "{{list.title}}"><br> <a><a>Product:</a>{{ list.title }}</a><br> <a><a>Category: </a>{{ list.category }}</a><br> <a><a>Desc: </a>{{ list.description }}</a><br> <a><a>Status: </a>{{ list.status }}</a><br> <a><a>Frist Bid: </a> {{ list.first_bid }} $ </a><br> <div><a><a>Current Bid: </a> {{ now_bid }} $ </div> <div><a><a>Listed By: </a> {{ list.user }}</div> <div> <form method= "get" action = "{% url "addwatchlist" %}"> <button type = "submit" value = {{ list.id }} name = "listid" >Add to Watchlist</button> </form> </div> <form method = "get" action = "{% url "bid_check" %}"> <input name = "bid_amnt" placeholder = "Bid Amount" type = "number"> <button type = "submit" name = "list_d" value = {{ list.id }}>accept</button> </form> <h3>Comments</h3> <div> <ul> {% for comment in comments %} <li><a><a>{{ comment.user }} : {{comment.comment}}</a></li> {% endfor %} </ul> </div> <form method = "get" action ="{% url "comments" %}"> <input required type = "text" placeholder = "Add Comment" name = "comment"> <button type = "submit" value = {{ list.id }} name = "listid"> Comment </button> </form> <div> {% if list.user == user.username %} <form method= "get" action = "{% url "winner" %}"> <button type = "submit" value = {{ list.id }} name = "listid" >Close Bid</button> </form> {% endif %} </div> {% endblock %}
winner_check.html
{% extends "auctions/layout.html" %} {% block body %} <h2>Your Winnings</h2> <div> {% for list in user_winlist %} <div> <img src={{ list.win_list.image.url }}><br> <a>Product:{{list.win_list.title}}</a><br> <a>Category:{{list.win_list.category}}</a><br> <a>Initial price:{{list.win_list.first_bid}}</a><br> <div>This bid was listed by <a>{{ list.win_list.user }}</a>.</div> </div> {% endfor %} </div> {% endblock %}
完整报错栈
Traceback (most recent call last): File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\backends\utils.py", line 89, in _execute return self.cursor.execute(sql, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\backends\sqlite3\base.py", line 328, in execute return super().execute(query, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The above exception (no such table: auctions_user_user_permissions) was the direct cause of the following exception: File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\core\handlers\exception.py", line 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\core\handlers\base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\utils\decorators.py", line 46, in _wrapper return bound_method(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\views\decorators\cache.py", line 62, in _wrapper_view_func response = view_func(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\admin\sites.py", line 422, in login **self.each_context(request), ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\admin\sites.py", line 337, in each_context "available_apps": self.get_app_list(request), ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\admin\sites.py", line 536, in get_app_list app_dict = self._build_app_dict(request, app_label) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\admin\sites.py", line 478, in _build_app_dict has_module_perms = model_admin.has_module_permission(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\admin\options.py", line 611, in has_module_permission return request.user.has_module_perms(self.opts.app_label) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\auth\models.py", line 331, in has_module_perms return _user_has_module_perms(self, app_label) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\auth\models.py", line 235, in _user_has_module_perms if backend.has_module_perms(user, app_label): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\auth\backends.py", line 121, in has_module_perms for perm in self.get_all_permissions(user_obj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\auth\backends.py", line 109, in get_all_permissions user_obj._perm_cache = super().get_all_permissions(user_obj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\auth\backends.py", line 27, in get_all_permissions *self.get_user_permissions(user_obj, obj=obj), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\auth\backends.py", line 96, in get_user_permissions return self._get_permissions(user_obj, obj, "user") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\contrib\auth\backends.py", line 87, in _get_permissions user_obj, perm_cache_name, {"%s.%s" % (ct, name) for ct, name in perms} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\models\query.py", line 398, in __iter__ self._fetch_all() ^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\models\query.py", line 1881, in _fetch_all self._result_cache = list(self._iterable_class(self)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\models\query.py", line 246, in __iter__ return compiler.results_iter( File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\models\sql\compiler.py", line 1511, in results_iter results = self.execute_sql( File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\models\sql\compiler.py", line 1560, in execute_sql cursor.execute(sql, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\backends\utils.py", line 102, in execute return super().execute(sql, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\backends\utils.py", line 67, in execute return self._execute_with_wrappers( File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\backends\utils.py", line 80, in _execute_with_wrappers return executor(sql, params, many, context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\backends\utils.py", line 84, in _execute with self.db.wrap_database_errors: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\utils.py", line 91, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\backends\utils.py", line 89, in _execute return self.cursor.execute(sql, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Nazi\AppData\Roaming\Python\Python311\site-packages\django\db\backends\sqlite3\base.py", line 328, in execute return super().execute(query, params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Exception Type: OperationalError at /admin/login/ Exception Value: no such table: auctions_user_user_permissions
问题解决步骤
1. 修复admin面板报错
该错误是用户权限关联表未创建导致,执行以下操作:
- 运行数据库迁移命令:
python manage.py makemigrations python manage.py migrate - 若自定义了User模型,检查
settings.py中AUTH_USER_MODEL配置是否正确,确保迁移文件已生成并应用。 - 若迁移无效,删除
migrations目录下除__init__.py外的所有文件,重新生成迁移并执行。
2. 修复商品不显示问题
从模板代码看,首页需要items变量,需补充或修改首页视图:
- 添加首页视图,查询活跃商品并传入模板:
def index(request): items = List.objects.filter(active_bool=True) return render(request, "auctions/index.html", {"items": items}) - 检查后台添加的商品
active_bool字段是否为True,若商品已被关闭(active_bool=False),首页不会显示,可通过admin面板修改状态。
内容的提问来源于stack exchange,提问作者zahra
相关产品推荐
相关产品推荐

