class Person(models.Model):
name = models.CharField(max_length=100)
class Entry(models.Model):
text = models.CharField(max_length=100)
person = models.ManyToManyField(Person, blank=True, null=True)
class MyModelForm(forms.ModelForm):
class Meta:
model = Entry
在我看来,我需要在保存之前将pk id添加到提交的表单中。将数据添加到视图中模型表单的多对多字段
data = request.POST.copy()
# 'person' is a ManyToManyField to a 'Person' model
# a form would normally send multiple id's as POST in this format -> u'id': [u'1', u'2']
# u'1,2' (an example) is a str variable accessible to the view
data[u'person'] = u'1,2'.split(",")
form = MyModelForm(data)
if form.is_valid():
form.save()
这给了我:
int() argument must be a string or a number, not 'list'
这是不够公平的。它在的情况下工作:
data[u'person'] = u'1'
我还没有成功尝试这样做:
我怎么能多个ID的保存到这个ManyToManyField?
一定很容易,但我错过了一点。
编辑: 期望的结果是(在“entry_person”表中的多条记录)存储form.person所有ID的MyModelForm的一个新实例(在“进入”表)。
UPDATE: 我似乎已经分离的问题。
如果我做的:
data = {}
data[u'person'] = u'1,2'.split(",")
它不作为结果工作是:
{u'person': [u'1', u'2'],}
如果我做的:
data = request.POST.copy()
data[u'person'] = u'1,2'.split(",")
它不工作(给出了上述错误) :
<QueryDict: {u'person': [[u'1', u'2']],}>
因此,所有我需要的是有
<QueryDict: {u'person': [u'1', u'2'],}>
任何建议如何?
您可以发布为模型的代码和形成的? – 2009-03-02 13:25:42
谢谢!这很奇怪,但我想我找到了导致问题的原因。 – dmi 2009-03-03 10:14:00