13

我想在多对多字段中插入一些数据。我收到此错误

user 是此函数的无效关键字参数

我也尝试了相关名称...但仍然无法正常工作...

我的模型如下所示:

模型.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字段,您不能给它一个用户,这不是 a 的工作方式,那将是.userWorkspaceManyToManyForeignKey

基本上,使用 a ForeignKey,每个工作区都有一个User与之关联,有一个直接链接,因此创建 a并将其传递Workspace -> Usera 是有意义的,就像您将填写 a 一样。WorkspaceUserCharField

ManyToMany关系意味着多个用户可以关联到aWorkspaceWorkspaces多对一User。使用 aManyToMany时,您将创建您的Workspace然后向其添加一些Users。

要添加到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使关系名称更清晰。

于 2012-10-06T22:18:34.170 回答