Django报错'Account'对象无subscribers_set属性的解决办法
错误原因
- 核心拼写错误:Django 一对多关系的默认反向关联字段规则为「小写的关联模型类名 +
_set」,你的关联模型是单数形式的Subscriber,因此默认反向字段应为subscriber_set,你在 views.py 中多写了字母s,写成了不存在的subscribers_set,这是触发报错的直接原因。 - 你的疑问「Python 是否不支持将 QuerySet 赋值给变量」不成立,该操作完全合法,报错和赋值行为没有任何关联。
修复方案
- 修正 views.py 中的字段拼写,将报错行修改为:
subscribers = account.subscriber_set.all()
- 额外修正模板文件中的变量错误:你在模板中定义的循环变量是
sub,但输出时误用了不存在的变量subscriber,可以将循环代码修改为:
{% for sub in subscribers %} <p>{{sub}}</p> {% endfor %}
- (可选优化)如果你希望直接使用
subscribers作为反向字段名,可以在 Subscriber 模型的外键定义中添加related_name参数自定义关联名:
account = models.ForeignKey( Account, on_delete=models.CASCADE, related_name="subscribers" )
配置后就可以直接使用account.subscribers.all()获取关联数据,无需记忆默认命名规则。
内容的提问来源于stack exchange,提问作者user8758206
相关产品推荐
相关产品推荐

