Django:此函数的关键字参数无效

时间:2012-10-06 22:13:07

标签: python django

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

  

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)

views.py

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

有人有想法吗?非常感谢!

1 个答案:

答案 0 :(得分:21)

您在user对象的Workspace字段中使用了ManyToMany字段,您无法为其提供一个用户,这不是ManyToMany的工作方式,将是ForeignKey

基本上,使用ForeignKey,每个工作区都有一个User与之关联,有直接链接Workspace -> User,因此创建Workspace并传递是有意义的它是User,就像你填写CharField

ManyToMany关系意味着可以将多个用户与Workspace和多个Workspaces与一个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)

应将user字段重命名为users ,以使关系名称更加清晰。