Django自动填充具有先前值的外键字段(Forms)

时间:2018-02-20 15:08:25

标签: django django-models django-forms django-views django-formwizard

我使用form wizard基于2个模型创建多步形式。

models.py:

class Author(models.Model):
    refCode = models.IntegerField(unique=True)
    lastName = models.CharField(max_length=20)
    firstName = models.CharField(max_length=20)
    birthDate = models.DateField()
    description = models.TextField()
    style = models.ForeignKey(Style)


class Book(models.Model):
    refCodeAuthor = models.ForeignKey(Author)
    title = models.CharField(max_length=100)
    summary = models.TextField()

view.py:

class AuthorWizard(SessionWizardView):
    form_list = [AuthorForm, DescriptionForm, BookForm] 
    def done(self, form_list, form_dict, **kwargs):
        form_values={}
        for form in form_list:
            form_values.update(form.cleaned_data)
        auth = Author(**form_values)
        auth.save()


        return render(self.request, 'done.html', {
            'form_values':form_values,
        })

我有3个步骤,对应form_list

AuthorForm

DescriptionForm

BookForm

当我在BookForm时,我不想显示refCodeAuthor,但在步骤refCode中使用AuthorForm的值自动填写此字段。 用户创建一个作者,然后他添加他的书。他不必选择refCodeAuthor,但它不在同一模型中。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以在AuthorWizard类中使用get_form方法:

let santa_images = {};
function setup(){
    santa_images = create_animation_dict();
}

另一种解决方案是将其传递给kwargs,并在表单初始化之前将其弹出,尽管如果您也不提供form.py文件,则很难推荐任何东西