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

标签 python django django-models foreign-keys

我已经四处寻找这个问题的答案,但找不到。使用外键时,我不断收到错误消息,告诉我“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/

相关文章:

Django Rest Framework - 如何在 POST 时设置 current_user

python - Django,在通过模型验证器自定义函数进行验证时传递整个对象实例

Python - NLTK 训练/测试分割

带有少量 url 参数的 Django DetailView

python - Django模型表单保存, 'int'对象没有属性 'save'

python - 如何在我的自定义小部件模板中包含内置的 django 小部件模板?

django - 在模型中为Django字段指定类型(对于Pylint)

python - 类型错误 : cannot concatenate 'str' and 'Redditor' objects

python - 需要在按不匹配日期分组的 2 个索引上转置一些 SQL 值(SQL 和 Python)

python xlsxwriter时间戳字体不正确