class Project_types(models.Model):
project_type = models.CharField(max_length=200)
def __str__(self):
return self.project_type
class Projects(models.Model):
project_types = models.ForeignKey(Project_types, on_delete=models.CASCADE)
project = models.CharField(max_length=200)
def __str__(self):
return self.project
當我嘗試運行時,Project_types(project_type='games').item_set.all()
我收到一條錯誤訊息,指出沒有設定屬性項。
uj5u.com熱心網友回復:
class Project_types(models.Model):
project_type = models.CharField(max_length=200)
def __str__(self):
return self.project_type
class Projects(models.Model):
project_types = models.ForeignKey(Project_types, on_delete=models.CASCADE)
project = models.CharField(max_length=200)
def __str__(self):
return self.project
首先,您的模型存在一些問題。
第一個模型名稱不應該是復數形式
這里一個Projects(應該是Project)有一個project_type,一個Project_types(應該是ProjectType)有一個project。
要運行您想要的查詢:
Project_types.filter(project_type='games').item_set.all()
正確的查詢是:
Project_types.filter(project_type='games').projects_set.all()
使用專案而不是物品,
相關管理器基于模型名稱(在這種情況下,Projects 變為 projects_set)
見這里https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_one/
uj5u.com熱心網友回復:
.item_set您通過運行創建的實體上不存在該屬性:
Project_types(project_type='games')
在我看來,您正在嘗試獲取所有Projects型別'games'。
要做到這一點,你必須使用QuerySet的的Projects像這樣的類:
Projects.objects.filter(project_types__project_type='games').all()
此外,建議:嘗試使用單數 CamelCase命名所有模型類,以便它們更容易理解。在您的示例中,Project_types應該是ProjectType,而Projects應該是Project。
uj5u.com熱心網友回復:
Project_types(project_type='games')實際上不回傳任何物件。這就是您收到該屬性錯誤的原因。您需要添加過濾器或使用 get。像下面這樣:
Project_types.objects.get(project_type='games').item_set.all()
或者
Project_types.objects.filter(project_type='games').item_set.all()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/311402.html
