gpt4 book ai didi

Django 多对多字段 : 'function' object is not subscriptable

转载 作者:行者123 更新时间:2023-12-04 14:40:43 26 4
gpt4 key购买 nike

所以你意识到你的模型中的外键应该真的是一个 m2m 并且你已经采用了提供 models.CASCADE 作为外键的位置参数的做法。
所以你最终得到这个代码:

class Group(models.Model):
members = models.ManyToManyField(Person, models.CASCADE)

你“修复”了其他一些事情,突然以你尝试做的所有事情的回溯结束:
File "/usr/local/lib/python3.5/site-packages/django/db/models/base.py", line 157, in __new__
new_class.add_to_class(obj_name, obj)
File "/usr/local/lib/python3.5/site-packages/django/db/models/base.py", line 316, in add_to_class
value.contribute_to_class(cls, name)
File "/usr/local/lib/python3.5/site-packages/django/db/models/fields/related.py", line 1516, in contribute_to_class
elif self.remote_field.is_hidden():
File "/usr/local/lib/python3.5/site-packages/django/db/models/fields/reverse_related.py", line 144, in is_hidden
return bool(self.related_name) and self.related_name[-1] == '+'
TypeError: 'function' object is not subscriptable

这是怎么回事?

最佳答案

ManyToManyField 和 ForeignKey 的方法签名不相同。 ManyToManyField 第二个位置参数实际上是“related_name”,这意味着您最终将 models.CASCADE 传递给了 related_name,如调试器中所示:

> /usr/local/lib/python3.5/site-packages/django/db/models/fields/related.py(1513)contribute_to_class()
-> if self.remote_field.symmetrical and (
(Pdb) p self.remote_field.related_name
<function CASCADE at 0x80645b400>

现在在你的显示器上贴一张便利贴,因为 3 个月后你会再做一次。

关于Django 多对多字段 : 'function' object is not subscriptable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41631052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com