2

我在提交 ModelForm 时遇到问题。

基本上,我的一个属性被排除在外,当我们创建表单时,我正在扩充 request.POST 对象以包含它(因此 ORM 可以毫无问题地保存它)。根据我的理解(再次,当谈到 django 时,我是一个 n00b),这就是它的工作原理。

我在调用时收到 IntegrityError form.save()

我正在使用的代码在这里:http ://dpaste.com/783425/ 。

编辑:为后代粘贴代码。

# forms.py
class CreateNewItemForm(ModelForm):
    class Meta:
        model = X.models.Y
        exclude = ('person',)

# views.py
def myview(request, person_id):
    if request.method == "POST":
        data = request.POST.copy()
        data['person'] = Person.objects.get(id=person_id)
        # NOTE: I've also tried: data['person'] = person_id

        form = CreateNewItemForm(data)

        if form.is_valid():
            form.save() # throws the IntegrityError
4

1 回答 1

4

我认为这段代码是错误的......为此更改你的代码......

def myview(request, person_id):
    data = None
    if request.method == "POST":
        data = request.POST
    form = CreateNewItemForm(data)
    if form.is_valid():
        newitem = form.save(commit=False)
        newitem.person = Person.objects.get(id=person_id)
        newitem.save()
于 2012-08-08T21:01:56.827 回答