<select>元素显示为带有虚线的默认值(---------),如何进行更改?

时间:2020-05-19 17:01:20

标签: python django

models.py

    class City(models.Model):
        name = models.CharField(max_length=20)

        def __str__(self):
            return f"{self.name}"


class Venue(models.Model):
    city = models.ForeignKey(City, on_delete=models.CASCADE, blank=False)

forms.py:

class VenueForm(forms.ModelForm):
    class Meta:
        model = Venue
        fields = [
            'city',
        ]

    def __init__(self, *args, **kwargs):
        super(VenueForm, self).__init__(*args, **kwargs)
        self.fields['city'].label = 'Град'

views.py:

form = VenueForm(request.POST or None)

context = {
    'form': form,
}

return render(request, "add_venue.html", context)

html渲染:

{% for field in form %}
    <div class="fieldWrapper">
        {{ field.label_tag }}
            <div class="errorcode{{field.html_name}}">
                {{ field.errors }}
            </div>
        {{ field }}
        {% if field.help_text %}
        <p class="help">{{ field.help_text|safe }}</p>
        {% endif %}
    </div>
{% endfor %}

在浏览器中的外观:

<select name="city" required id="id_city">
  <option value="" selected>---------</option>

  <option value="1">Пловдив</option>

  <option value="2">София</option>

</select>

问题是此默认值带有虚线<option value="" selected>---------</option>

有没有办法删除/更改它?

docs中有解决方案,但这是针对ModelChoiceField的,这不是我的情况,它是ForeighKey参考。

1 个答案:

答案 0 :(得分:1)

文档中有解决方案,但这是针对 p_value people type 1 & 2 X people type 1 & 3 X people type 1 & 4 X people type 2 & 3 X people type 2 & 4 X people type 3 & 4 X 的,这不是我的情况,它是ModelChoiceField的参考。

如果您在ForeighKey上定义了Form,则ModelForm(因此也就ForeignKey)没有ForeignKey字段,如documentation of ModelForms [Django-doc]中所述。模型级别,则对应于您的ModelChoiceField中的ModelForm

因此,您可以使用None来更改empty_label=… parameter [Django-doc]

class VenueForm(forms.ModelForm):
    class Meta:
        model = Venue
        fields = [
            'city',
        ]

    def __init__(self, *args, **kwargs):
        super(VenueForm, self).__init__(*args, **kwargs)
        self.fields['city'].label = 'Град'
        self.fields['city'].empty_label = None