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

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

回答

20

您使用的ManyToMany现场为您Workspace对象的user领域,你不能给它一个用户,这不是如何ManyToMany的作品,这将是一个ForeignKey

基本上,使用ForeignKey,每个工作区具有关联一个User,有一个直接的联系Workspace -> User,因此是很有意义创建Workspace并把它传递一个User,就像你在一个CharField被灌。

ManyToMany关系意味着几个用户可以关联到一个Workspace和几个Workspaces一个User。当使用ManyToMany时,您将创建您的Workspace,然后将一些User s添加到它。

若要添加至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使关系名清晰。

+0

感谢您的回答...即时通讯我的情况我真的想让几个用户与一个用户关联到一个工作区和几个工作区;-P – Jurudocs

+0

@Jurudocs然后,一个'ManyToMany'是适当的用途,请参阅我的编辑回答如何使用它! –

相关问题