【问题标题】:In Django getting errors based on dropdown selection在 Django 中根据下拉选择获取错误
【发布时间】:2019-09-07 00:26:02
【问题描述】:

从下方选择字段时出错。不明白为什么它会抛出错误 Django下拉form.error:ERROR ALERT: location_name Select a valid choice. That choice is not one of the available choices.

这是模型、表单、视图和 html 的样子 型号

class Code (models.Model):
    name = models.CharField(max_length=4, default=None, blank=True)
    def __str__(self): return self.name

class Device (models.Model):
    code = models.ForeignKey(Code, on_delete=models.CASCADE, null=True)
    ip = models.GenericIPAddressField(protocol='IPv4', unique=True)
    def __str__(self): return self.ip

class SiteData (models.Model):
    site = models.ForeignKey(Code, on_delete=models.SET_NULL, null=True)
    site_ip = models.ForeignKey(Device, on_delete=models.SET_NULL, null=True)
    site_data1 = models.CharField(max_length=3, default='120')

class CombineData(models.Model):
    location = models.ForeignKey(Code, on_delete=models.SET_NULL, null=True)
    device = models.ForeignKey(AddData, on_delete=models.SET_NULL, null=True)
    locdata = models.ForeignKey(SiteData, on_delete=models.SET_NULL, null=True)

形式

class CombineData_form(forms.ModelForm):
  class Meta:
        model = P2_NexusLeafPair
        fields = '__all__'

查看

def comboView(request, *args, **kwargs):
    template_name = 'site_display.html'
    code = Code.objects.order_by('-name')
    device = Device.objects.order_by('-ip')
    sitename = SiteData.objects.order_by('-site')
    content = {
        'code': code,
        'device': device,
        'sitename': sitename
    }
    if request.method == 'POST':
        form = CombineData_form(request.POST or None)
        print(form.is_valid())
        #print(form.errors)
        if form.is_valid():
            . . . 
        else:
            messages.error(request, form.errors)
    else:
        form = CombineData_form()
    return render(request, template_name, content)

HTML

<form id="comboView" class="post-form" role=form method="POST" action="comboView">{% csrf_token %}
<div name="code" class="dropdown" id="mainselection" required>
  <select name="dc_name">
  <option class="dropdown-item" value="">---------</option>
    {% for item in code %}
      <option value="{{ item }}">{{ item }}</option>
    {% endfor %}
</div>
<input type="submit" value="Submit" />
</form>
{same as other fields: device, sitename}

【问题讨论】:

    标签: django forms dropdown


    【解决方案1】:
    {% for item in content %}
    {{item.code}}
    {% endfor %}
    

    试试看。

    【讨论】:

      猜你喜欢
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2015-05-19
      • 1970-01-01
      相关资源
      最近更新 更多