Problém s validací. Vyberte správnou možnost. Vaše volba není mezi platné hodnoty

0

Otázka

Jsem začátečník v Pythonu a Django. Snažím se napsat jednoduchý Systém správy Nemovitostí. Mám problém s asigning stávající dům sdružení pro novou vlastnost vstupu. Moje soubory:
models.py

class Property(models.Model):
    # Fields
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=45, blank=False) # Property name
    address = models.CharField(max_length=198, blank=False) # Property address
    postalcode = models.CharField(max_length=6, blank=False) # Property postalcode
    city = models.CharField(max_length=45, blank=False) # Property city
    kw_number = models.CharField(max_length=15, blank=True) # Numer KW
    ha_choice = models.CharField(max_length=2, choices=[(i.pk, i.name) for i in HousingAssociation.objects.all()])
    # Foreign Keys
    # TODO zmiana on_delete na inny!
    house_association = models.ForeignKey(HousingAssociation, on_delete=models.CASCADE)

    # Metadata
    class Meta:
        ordering = ['id']

    # Methods
    def add(self):
        self.save()

    def __str__(self):
        """String for representing the MyModelName object (in Admin site etc.)."""
        # return self.id, self.name, self.address, self.postalcode, self.city, self.kw_number
        return self.name

forms.py

class PropertyForm(forms.ModelForm):
    class Meta:
        model = Property
        fields = ('name', 'address', 'postalcode', 'city', 'ha_choice', 'kw_number')

views.py

def property_form_new(request):
    if request.method == "POST":
        form = PropertyForm(request.POST)
        if form.is_valid():
            form.save()
            return render(request, 'registration/prop/success.html')
    else:
        form = PropertyForm()
    return render(request, 'registration/prop/prop_new.html', {'property_new': form})

V případě, že django se vrací na mě tohle: screenshot

To znamená Vybrat správnou možnost. 14 není mezi platné hodnoty.' 14 je id existující záznam v db a to je správné. Zdrojový kód HTML je takhle:

<h2>Nowa nieruchomość</h2>
  <form method="POST" class="post-form">
    <input type="hidden" name="csrfmiddlewaretoken" value="wsrMCEU8UfLMHCBGHtKfcI1wZzGdqM8HpEAEyexx2OIDZue8Chi4DaJxsLYg7aHk">
    <p><label for="id_name">Name:</label> <input type="text" name="name" value="BCh" maxlength="45" required id="id_name"></p>
<p><label for="id_address">Address:</label> <input type="text" name="address" value="Batalionów Chłopskich 1/18" maxlength="198" required id="id_address"></p>
<p><label for="id_postalcode">Postalcode:</label> <input type="text" name="postalcode" value="15-661" maxlength="6" required id="id_postalcode"></p>
<p><label for="id_city">City:</label> <input type="text" name="city" value="Białystok" maxlength="45" required id="id_city"></p>
<ul class="errorlist"><li>Wybierz poprawną wartość. 14 nie jest żadną z dostępnych opcji.</li></ul>
<p><label for="id_ha_choice">Ha choice:</label> <select name="ha_choice" required id="id_ha_choice">
  <option value="">---------</option>

  <option value="14" selected>Spółdzielnia1</option>

  <option value="15">Spółdzielnia 2</option>

  <option value="16">flatman</option>

  <option value="17">Perspektywa</option>

  <option value="18">ŁSM</option>

  <option value="42">ŁSM</option>

  <option value="43">ŁSM 43</option>

  <option value="44">ŁSM</option>

  <option value="45">ŁSM</option>

  <option value="46">ŁSM</option>

  <option value="47">ŁSM</option>

  <option value="48">ŁSM</option>

  <option value="49">Spółdzielnia Testowa 0</option>

</select></p>
<p><label for="id_kw_number">Kw number:</label> 
<input type="text" name="kw_number" value="BI/1A/56743" maxlength="15" id="id_kw_number"></p>

    <button type="submit" class="save btn btn-default">Save</button>
  </form>


Snažil jsem s

class PropertyForm(forms.ModelForm):
    ha_choice = models.ChoiceField(choices=[(i.pk, i.name) for i in HousingAssociation.objects.all()])
    class Meta:
        model = Property
        fields = ('name', 'address', 'postalcode', 'city', 'ha_choice', 'kw_number')

a také s MultipleChoiceField ale bez dobré účinky. Může někdo pomoci najít, jak asign to správně?

1

Nejlepší odpověď

0

Našel jsem řešení. Velmi jednoduché, stačí změnit pole

ha_choice

v

class PropertyForm(forms.ModelForm):
    class Meta:
        model = Property
        fields = ('name', 'address', 'postalcode', 'city', 'ha_choice', 'kw_number')

k

house_association

Tak jednoduché.

2021-11-23 21:42:46

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................