I want to insert some data into a many to many field. I \'m getting this Error
<user is an invalid keyword argument for this function
You used a ManyToMany field for the user
field of your Workspace
object, you can't give it one user, that's not how a ManyToMany
works, that would be a ForeignKey.
Basically, using a ForeignKey
, each workspace has one User
associated to it, there's a direct link Workspace -> User
, so it makes sense to create a Workspace
and pass it an User
, like you would be filling in a CharField
.
A ManyToMany
relationship means that several users can be associated to a Workspace
and several Workspaces
to one User
. When using a ManyToMany
, you would create your Workspace
and then add some User
s to it.
To add to a ManyToMany
relationship, do the following:
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)
You should rename the user
field to users
to make the relationship name clearer.