13

多対多フィールドにデータを挿入したい。このエラーが発生しています

user は、この関数の無効なキーワード引数です

私も 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)

ビュー.py

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

誰かがアイデアを持っていますか?どうもありがとう!

4

1 に答える 1

22

オブジェクトのフィールドにManyToManyフィールドを使用しました。1 人のユーザーを指定することはできません。userWorkspaceManyToManyForeignKey

基本的に、 を使用するとForeignKey、各ワークスペースにUser関連付けられた 1 つがあり、直接リンクがWorkspace -> Userあります。WorkspaceUserCharField

関係とは、複数の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)

リレーションシップ名を明確にするために、フィールドの名前を に変更する必要がありuserusersます。

于 2012-10-06T22:18:34.170 に答える