我想用一个ManyToManyField保存一个Django模型实例。当我尝试用create()经理这样做,它产生以下错误:ManyToManyField导致Django模型保存问题
Exception Value:'post' is an invalid keyword argument for this function
这里是我的模型:
class Amenity(models.Model):
post=models.ManyToManyField(Post,blank=True,null=True)
name=models.CharField(max_length=50, choices=AMENITIES)
def __unicode__(self):
return str(self.name)
这里是视图的相关部分:
if request.POST.get('amenities'):
amens=request.POST['amenities'].split(',')
p=int(post.id)
for a in amens:
Amenity.objects.create(post=p,name=a)
return HttpResponse('success')
我试图一次保存多个设施,我会在模型之外这么做,因为我在设计中考虑了这一点,并且我不想在这种情况下创建自定义字段。
post.id在这里返回正确的值,所以这似乎不是问题。
谢谢!
我已经知道帖子实例。问题是关键字参数“post”无效,即使它是我的Amenity模型中的M2M字段。 post_id不是一个字段,因此也提高关键字参数错误 – Ben 2011-04-20 03:47:23
嗨,工作。感谢您对帖子和帖子的建议。这是一个很好的观点。我有一些问题:1)为什么我不能用create()管理器创建对象?为什么我不能将post关键字arg添加到编辑版本的Amenity实例构造函数中?我假设这与桌面M2M有关。最后,add方法来自哪里?它只是一个内置的python吗? – Ben 2011-04-20 04:18:41
我想用get_or_create替换Amenity.objects.create,但是我想我需要用post参数来做到这一点。它不适用于create(),所以我认为它不适用于get_or_create – Ben 2011-04-20 04:20:44