如何设置Django模型表单的初始值

时间:2020-08-06 15:14:10

标签: django django-forms

我正在尝试为Django模型表单设置初始值 但是当我尝试使用views.py:

add_contact_form = newContactForm(request.POST, initial={'relation':'Customer'})

它不起作用。如果我在模型中指定默认值,它们会正常工作。

Models.py:

class contact(models.Model):

    name = models.CharField(max_length=20, blank=True)
    email = models.EmailField(primary_key=True)
    tel = PhoneField(null=True, blank=True)

    contact_relations = [
    ('Supplier', 'Supplier'),
    ('Customer', 'Customer'),
    ('Other', 'Other'),
    ]

    relation =  models.CharField(max_length=50, choices=contact_relations)

Forms.py:

class newContactForm(forms.ModelForm):
    class Meta:
        model = contact
        fields = [
        'name',
        'email',
        'tel',
        'relation',
        ]
        widgets = {
        'relation': forms.RadioSelect(),
        }

Views.py:

def add_contact_view(request):
    add_contact_form = newContactForm(request.POST, initial={'relation':'Customer'})
    if add_contact_form.is_valid():
        add_contact_form.save()
    else:
        add_contact_form = newContactForm()
    context = {
        "add_contact_form":add_contact_form,
        }
    return render(request, 'contacts/new_contact.html', context)

1 个答案:

答案 0 :(得分:0)

那是因为您在页面加载时未设置它们,所以正在提交表单时进行初始化。

def add_contact_view(request):
    add_contact_form = newContactForm(request.POST)
    if add_contact_form.is_valid():
        add_contact_form.save()
    else:
        add_contact_form = newContactForm(initial={'relation':'Customer'})
    context = {
        "add_contact_form":add_contact_form,
        }
    return render(request, 'contacts/new_contact.html', context)
相关问题