2016-06-15 76 views
3

當我嘗試運行插入到我的一個表中時出現以下錯誤。Django錯誤。不能分配必須是一個實例

無法分配「1」:「Team.department_id」必須是一個「部門」實例

誠然,我稍微不確定,如果我正確使用外鍵的概念。我試圖運行的插入以及我的models.py中的代碼片段如下。

我想要做的是,當有人想創建一個新的團隊。他們必須將其附加到一個部門。因此部門ID應該在兩組表中。

new_team = Team(
    nickname = team_name, 
    employee_id = employee_id, 
    department_id = int(Department.objects.get(password = password, department_name = department_name).department_id) 
) 

models.py

class Department(models.Model): 
    department_id = models.AutoField(auto_created=True, primary_key=True, default=1) 
    department_name = models.CharField(max_length=60) 
    head_id = models.CharField(max_length=30) 
    password = models.CharField(max_length=128) 


class Team(models.Model): 
    team_id = models.AutoField(primary_key=True) 
    department_id = models.ForeignKey('Department', related_name = 'Department_id') 
    employee_id = models.CharField(max_length=30) 
    nickname = models.CharField(max_length=60) 
    team_image = models.ImageField(upload_to=get_image_path, blank=True, null=True) 

進入這裏

回答

7

代碼你並不需要通過部門ID,該實例本身就足夠了。以下應該只是罰款:

new_team = Team(
    nickname = team_name, 
    employee_id = employee_id, 
    department_id = Department.objects.get(password = password, department_name = department_name) 
) 

只是注意,不要老是命名洋田東西 _id。那東西就夠了。 Django旨在使用戶的角度更容易,後綴_id意味着您正在考慮數據庫層。事實上,如果您將您的列命名爲department,django會自動爲您創建數據庫中的department_id列。事情的方式,你正在讓Django創建department_id_id這是相當愚蠢的。

+1

非常感謝。有效。但是,你們的解釋也都有助於我的理解。 – rahimbah

相關問題