我遇到了使用字符串名稱顯示Django而沒有獲取與該名稱關聯的「對象」的問題。我試圖使用ManyToMany關係,但我無法弄清楚。我得到的錯誤是:Django ManyToMany'str'對象沒有任何屬性
AttributeError at <URL>
'str' object has no attribute '_default_manager'
這裏是我的模型設置:
型號/ hood.py
class Hood(models.Model):
name = models.CharField(unique=True)
restaurants=models.ManyToManyField(Restaurant, through="restaurant_hood_map.RestaurantHoodMap")
class Meta:
db_table = "hoods"
app_label="delivery"
型號/ restaurant.py
class Restaurant(models.model):
name=models.ForeignKey(CompanyName)
is_active=models.BooleanField(default=True)
class Meta:
db_table="restaurants"
app_label="delivery"
個型號/ restuarant_hood_map.py
<import restaurant and hood>
class RestaurantHoodMap(models.Model):
restaurant = models.ForeignKey(Restaurant)
hood = models.ForeignKey(Hood)
class Meta:
db_table="restaurant_hood_map"
app_label="delivery"
現在,我知道是什麼問題.....當我嘗試獲得相關的餐廳關閉吸油煙機,我得到這個錯誤。這是因爲它將「restaurant.Restaurant」視爲字符串值。但是,我認爲它被接受使用字符串值,以避免循環依賴?至少這就是我從文檔認爲:
https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey
我也跟着這個例子,它看起來像正是我想要的:
How do I tell Django to not create a table for an M2M related field?
然而,似乎沒有不當你得到一個胡德對象,並做hood.restaurants ....工作吧。
任何幫助將是真棒!
更新:我對模型做了輕微的更改以更準確地顯示發生了什麼。
你在哪裏查詢模型?你可以發佈views.py或你在哪裏做查詢? –