代码之家  ›  专栏  ›  技术社区  ›  skateb2020

AttributeError:模块“django”。数据库。“模型”没有属性“manytomy”

  •  1
  • skateb2020  · 技术社区  · 2 年前

    我正在试着 model 对象a ManyToMany 字段,以便我可以通过两个模型访问对象。

    我收到以下信息 error .

    listing = models.ManyToMany(Listings, blank=True, related_name="listing")
    AttributeError: module 'django.db.models' has no attribute 'ManyToMany'
    

    models.py :

    class WatchList(models.Model):
        listing = models.ManyToMany(Listings, blank=True, related_name="listing")
        user = models.ForeignKey(User, on_delete=models.CASCADE, default="")
    
    1 回复  |  直到 2 年前
        1
  •  3
  •   Sunderam Dubey    2 年前

    字段名称为 ManyToManyField  [Django-doc] ,因此这包括 …Field 在里面 ManyToMany Field :

    from django.conf import settings
    
    class WatchList(models.Model):
        listing = models.ManyToManyField(Listings, blank=True, related_name='watchlists')
        user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

    笔记 :通常最好使用 settings.AUTH_USER_MODEL  [Django-doc] 参考用户模型,而不是使用 User model [Django-doc] 直接地有关更多信息,请参见 referencing the User model section of the documentation .


    笔记 :The related_name=… parameter [Django-doc] 中关系的名称 颠倒 ,所以从 Listings 模型到 Watchlist 本例中的模型。因此,将其命名为 与正向关系相同。因此,您可能需要考虑重命名 listing 与的关系 watchlists .


    笔记 :通常Django模型 单数的 姓名,so 表册 而不是 listings .