【问题标题】:Adding placeholder to form field in Django将占位符添加到 Django 中的表单字段
【发布时间】:2020-11-29 12:39:39
【问题描述】:

所以我已经看到了许多不同的方法来做到这一点,但没有一个适合我的设置方式。我想为表单中的文本字段添加占位符('user'、'title'、'comment')

forms.py

class RestroomForm(forms.ModelForm):
    class Meta:
        model = RestroomReview
        fields = (
            'user', 'public', 'rest_type', 
            'baby', 'needle', 'handicap', 
            'rating', 'title', 'comment'
            )

models.py

class RestroomReview(models.Model):
    ...
    ...
    ...
    venue = models.ForeignKey(Venue, blank=False, on_delete=models.CASCADE)
    user = models.CharField(max_length=200, blank=False)
    public = models.BooleanField(blank=False)
    rest_type = models.CharField(
        max_length=1, 
        choices=RESTROOM_TYPE_CHOICES, 
        default=MEN
    )
    baby = models.BooleanField('Changing Table')
    needle = models.BooleanField('Sharps Container')
    handicap = models.BooleanField('Handicap Accessible')
    rating = models.IntegerField(choices=RATING_CHOICES, default=1)
    title = models.CharField(max_length=200, blank=False)
    comment = models.TextField(max_length=1000, blank=False)
    posted_date = models.DateTimeField(blank=False)

    def publish(self):
        posted_date = datetime.datetime.today()
        self.save()
    
    def __str__(self):
        return f'Review for {self.venue.name} by {self.user}'

venue_detail.html

<!-- form to review restroom -->
<div class="container">
    <form method="POST" action="{% url 'venue_detail' venue_pk=venue.pk %}">
        {% csrf_token %}

        {% for field in restroom_form %}
            <div class="form-group">
                <label for="{{ field.id_for_label }}">{{ field.label }}</label><br>
                {{ field|add_class:'form-control' }}
            </div>
        {% endfor %}
        <input type="submit" value="Submit">
    </form>
</div>

有没有办法在 models.py 中设置占位符?我无法在 forms.py 中设置它,就像我在这里看到的建议一样。或者有什么地方我可以在我的模板中添加它?如果我可以提供更多信息/上下文,请告诉我。

【问题讨论】:

    标签: python django django-models django-forms placeholder


    【解决方案1】:

    这应该在您的 forms.py 中(以“用户”为例。并非所有参数都是必需的):

    from django.core.validators import RegexValidator
    
    def My_TextField_Validator(self):
        return RegexValidator(r'^[-a-zA-Z0-9. ]+$',
        'Valid Input: Alphanumeric characters, dash, dot, space')
    
    class RestroomForm(forms.ModelForm):
        user = forms.CharField(max_length=50, min_length=4, required=True,
                               help_text='My help text', label='My Label',
                               validators=[My_TextField_Validator],
                               widget=forms.TextInput(attrs={'class': 'form-control', 
                               'placeholder': 'User'}))
        class Meta:
            model = RestroomReview
            fields = (
                'user', 'public', 'rest_type', 
                'baby', 'needle', 'handicap', 
                'rating', 'title', 'comment'
                )
    

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 2018-08-07
      • 2017-09-18
      • 2013-10-29
      • 2018-05-04
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多