Django多对多'str'对象没有属性'_meta'

时间:2016-07-05 17:08:09

标签: django

我有以下Django模型:

class Recipe(models.Model):
       ingredients = models.ManyToManyField(
           'foo.Ingredient',
            through='RecipeIngredient',
            through_fields=('recipe', 'ingredient')
       )

class RecipeIngredient(models.Model):

    recipe = models.ForeignKey(Recipe, blank=True, null=True)
    ingredient = models.ForeignKey('foo.Ingredient', blank=True, null=True)

产生错误:

name = model._meta.db_table
AttributeError: 'str' object has no attribute '_meta'

看起来ORM无法找到foo.Ingredient模型并将其解释为str(但ForeginKey工作正常)

我也尝试使用through='current.RecipeIngredient,它产生:

sec_column = fk.m2m_column_name()
AttributeError: 'ManyToManyField' object has no attribute 'm2m_column_name'

如何解决?

感谢。

1 个答案:

答案 0 :(得分:0)

AttributeError: 'str'可以通过将'{1}}替换为'through ='current_app.RecipeIngredient'来解决(请参阅more details here at the issue discussion

AttributeError:'ManyToManyField'对象没有属性'm2m_column_name'可以通过将Ingredient和recipe放到同一个app来解决。

但更新到Django 1.9.7是最好的方法。