Stworzyłem model Django z trzema polami, w których jedno z nich jest ukryte, a pozostałe są widoczne

1.CharField
2.IntegerField (Hidden Field)
3.DateTimeField

Ukryłem to za pomocą następującego kodu:

class HostCreateForm(forms.ModelForm):
    class Meta:
        model = Host
        widgets = {
            'Zone_Vale': forms.HiddenInput()
          }

Aby wyświetlić ten formularz, używam następującego kodu w moim szablonie:

<form action="" method="POST">
    {{ form.as_p }}
    <input type="submit" value="{% trans "Add host" %}" />

Wszystko jest w porządku, ale chcę również przekazać zmienną w tej ukrytej warstwie wejściowej. Nie mam pojęcia, jak to zrobić. Próbowałem to zrobić, dostosowując szablon (sprawdź ten link:) https://docs. djangoproject.com/en/dev/topics/forms/ ` Na przykład {{ form.as_p}} zwróci formularz zawierający dwa widoczne pola, a dane do nich to :(jaki użytkownik wpisał) i ukryte pole. Więc chcę przekazać zmienną do tego ukrytego pola z pliku template.html

To też nie działa. Potrzebuję twojej pomocy

0
Amit Pal 28 luty 2012, 13:45

2 odpowiedzi

Najlepsza odpowiedź

Jeśli masz ochotę się pobrudzić, szybkim rozwiązaniem jest wypełnienie tego pola za pomocą javascript. Właściwym sposobem powinno być użycie parametru "initial" podczas tworzenia instancji obiektu formularza w view.py

Odniesienie: https://docs.djangoproject. com/pl/1.3/ref/forms/api/#django.forms.Form.initial

Nawet będąc bardzo brudnym, niektóre rozwiązania JavaScript, takie jak to, również powinny działać: (za pomocą jQuery. Dostosuj do swoich potrzeb)

<script type="text/javascript">
    $(document).ready(function(){
        $('form input[name$="Zone_Vale"]').val(DESIRED_HIDDEN_VALUE)
    })
</script>

Ale nie bądź dumny z tego, że to robisz.

1
alanjds 29 luty 2012, 18:31

Nie będziesz w stanie przekazać zmiennej do pola na poziomie szablonu, biorąc pod uwagę sposób renderowania szablonu.

Jeśli naprawdę, bezwzględnie musisz przekazać zmienną do formularza na poziomie szablonu, sugerowałbym utworzenie tagu szablonu, który:

  1. Rozwiąż swoją zmienną z kontekstu żądania
  2. Utwórz wystąpienie klasy formularza, używając zmiennej jako części danych początkowych formularza
  3. Dodaj formularz do kontekstu, który ma być renderowany
1
Brandon 28 luty 2012, 19:43