2012-10-06 29 views
8

我想將一些數據插入多對多字段中。我在收到此錯誤Django:此函數的無效關鍵字參數

用戶對這個功能

我還與relatedName嘗試了...但還是不工作無效的關鍵字參數...

我模型是這樣的:

models.py

class Workspace(models.Model): 
    user = models.ManyToManyField(User,null=False, blank=False, related_name='members') 
    workspace_name = models.CharField(max_length=80, null=False, blank=False) 
    workspace_cat =models.CharField(max_length=80, null=True, blank=True) 

v iews.py

db= Workspace(user=5, workspace_name=data_to_db['workspace_name'],workspace_cat=data_to_db['workspace_category']) 
db.save() 

有人有想法嗎?非常感謝!

回答

20

您使用的ManyToMany現場爲您Workspace對象的user領域,你不能給它一個用戶,這不是如何ManyToMany的作品,這將是一個ForeignKey

基本上,使用ForeignKey,每個工作區具有關聯一個User,有一個直接的聯繫Workspace -> User,因此是很有意義創建Workspace並把它傳遞一個User,就像你在一個CharField被灌。

ManyToMany關係意味着幾個用戶可以關聯到一個Workspace和幾個Workspaces一個User。當使用ManyToMany時,您將創建您的Workspace,然後將一些User s添加到它。

若要添加至ManyToMany關係,做到以下幾點:

my_user = User.objects.get(pk = 5) 
my_workspace = Workspace(workspace_name=data_to_db['workspace_name'],workspace_cat=data_to_db['workspace_category']) 
my_workspace.save() # committing to the DB first is necessary for M2M (Jurudocs edit) 
my_workspace.users.add(my_user) 

應該user場重命名爲users使關係名清晰。

+0

感謝您的回答...即時通訊我的情況我真的想讓幾個用戶與一個用戶關聯到一個工作區和幾個工作區;-P – Jurudocs

+0

@Jurudocs然後,一個'ManyToMany'是適當的用途,請參閱我的編輯回答如何使用它! –

相關問題