2012-10-06 24 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() 

誰かがアイデアを持っていますか?どうもありがとう!あなたのWorkspaceオブジェクトのuserフィールドのManyToManyフィールドを使用

答えて

20

、あなたはそれを一人のユーザに与えることができない、それはForeignKeyだろうかManyToMany作品ではありません。 ForeignKeyを使用して、各ワークスペースは、それに関連付けられた1 Userを持って

は基本的には、直接リンクWorkspace -> Userがありますので、あなたはCharFieldに記入されますようにそれは、Workspaceを作成し、それをUserを渡すことは理にかなっています。

ManyToManyという関係は、複数のユーザーがWorkspaceに関連付けられ、複数のWorkspacesが1つのUserに関連付けられることを意味します。 ManyToManyを使用する場合は、Workspaceを作成し、次にを追加してUserを追加します。

次の操作を行い、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) 

あなたは、関係名を明確にするためにusersuserフィールドの名前を変更する必要があります。

+0

あなたの答えに感謝します。私は本当に複数のユーザーを1人のユーザーにワークスペースと複数のワークスペースに関連付けたいと思っています; -P – Jurudocs

+0

@Jurudocs次に、ManyToManyが適切な使用方法です。どのようにそれを使用するように編集された答え! –

関連する問題