Как установить начальные значения для Django Типовой бланк - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь установить начальные значения для своей формы модели 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 голосов
/ 06 августа 2020

это потому, что вы не устанавливаете их при загрузке страницы, вы инициализируете их при отправке формы.

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)
...