首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验证的问题。选择正确的选项。您的选项不在有效值中。

验证的问题。选择正确的选项。您的选项不在有效值中。
EN

Stack Overflow用户
提问于 2021-11-23 21:11:12
回答 1查看 60关注 0票数 0

我是Python和Django的乞丐。我想写一个简单的物业管理系统。我对现有的房协申请新的房产有问题。我的档案:

models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
class PropertyForm(forms.ModelForm):
    class Meta:
        model = Property
        fields = ('name', 'address', 'postalcode', 'city', 'ha_choice', 'kw_number')

views.py

代码语言:javascript
复制
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})

如果这样,django返回给我如下:屏幕截图

它的意思是‘选择正确的选项。14不在有效值之列。’14是db中现有条目的id,它是正确的。HTML源代码如下所示:

代码语言:javascript
复制
<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>

我试过

代码语言:javascript
复制
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')

也可以用MultipleChoiceField,但没有好的效果。有谁能帮忙找出正确的标志吗?

EN

回答 1

Stack Overflow用户

发布于 2021-11-23 21:42:46

我找到了解决办法。非常简单,只是为了改变一个字段

代码语言:javascript
复制
ha_choice

在……里面

代码语言:javascript
复制
class PropertyForm(forms.ModelForm):
    class Meta:
        model = Property
        fields = ('name', 'address', 'postalcode', 'city', 'ha_choice', 'kw_number')

代码语言:javascript
复制
house_association

太简单了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70087867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档