gpt4 book ai didi

python - foreignKey 模型没有 Manager (即 'Foo' 对象没有属性 'foo_set' )

转载 作者:行者123 更新时间:2023-12-01 06:12:19 34 4
gpt4 key购买 nike

我已经四处寻找这个问题的答案,但找不到。使用外键时,我不断收到错误消息,告诉我“Foo 对象没有属性“foo_set”。我对 Django/Python 有点陌生,所以我确信这里有一个简单的答案,但到目前为止我还没有找到它。下面是一些代码(用于存储游戏中使用的各种棋盘,每个棋盘都应该有多个与之关联的六角形):

型号:

class Boards(models.Model):
boardnum = models.IntegerField(unique=True)
boardsize = models.IntegerField(default=11)
hexside = models.IntegerField(default=25)
datecreated = models.DateTimeField(auto_now_add = True)

class Hexes(models.Model):
boardnum = models.ForeignKey(Boards, null = True)
col = models.IntegerField()
row = models.IntegerField()
cost = models.IntegerField(default=1)

代码(有效):

newboard, createb = Boards.objects.get_or_create(boardnum=boardn)

createb 返回 True。

代码(这紧随上述内容,并且不起作用):

try:
hx = newboard.boards_set.create(col=c, row=r)
except Exception, err:
print "error:", err
traceback.print_exc()

“err”和“traceback.print_exc()”都给出:AttributeError:“Boards”对象没有属性“boards_set”

如果我首先使用 get_or_create 创建 Hexes 记录,然后在其上尝试 newboard.boards_set.add(),我会收到相同的错误。

有什么想法吗?感谢所有建议。

最佳答案

Django 用于反向外键管理器的名称是包含外键的模型的名称,而不是管理器所在模型的名称。

就您而言,它将是:

newboard.hexes_set.create(col=c,row=r)

我发现使用 manage.py shell 命令导入模型并检查它们(使用 dir 等)以检查所有可用属性非常有用。

关于python - foreignKey 模型没有 Manager (即 'Foo' 对象没有属性 'foo_set' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5162874/

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