Enes
Enes

Reputation: 341

Is it correct use for Django ModelForm

My question; i'm used ModelForm instead of forms.Form and i want to organize form in html file instead of forms.py file (i don't want to use attr tag because my form.html file is very complicated) Is this usage correct?

forms.py

 class CommentForm(forms.ModelForm):
    class Meta:
        model=Comment
        fields=[
            'name',
            'email',
            'comment',
        ]

html file

<form class="post-comment-form" method="POST">
      {% csrf_token %}
      {% if form.errors %}
          {% for error in form.non_field_errors %}
              {{ error }}
          {% endfor %}
  {% endif %}

<div class="form-row">              
  <div class="form-item half blue">
    <label for="id_name"  class="rl-label" >Name</label>
    {{ form.name}}
  </div>

  <div class="form-item half blue">
    <label for="id_email" class="rl-label" >Email</label>
    {{ form.email}}
  </div>              
</div>

<div class="form-row">             
  <div class="form-item blue">
    <label for="id_comment"  class="rl-label">Comment</label>
    {{ form.comment }}
  </div>
</div>

<button type="submit" class="save-button">Submit</button>

Upvotes: 0

Views: 37

Answers (2)

Arjun Shahi
Arjun Shahi

Reputation: 7330

If you don't want to use the {{form}} then you have to give the input field for each model's fields like <input type="text" name = "name"> .For example

 <div class="form-row">              
      <div class="form-item half blue">
        <label for="id_name"  class="rl-label" >Name</label>
        **<input type="text" name = "name">**
      </div>

      <div class="form-item half blue">
        <label for="id_email" class="rl-label" >Email</label>
        <input type="text" name = "email">
      </div>              
    </div>

    <div class="form-row">             
      <div class="form-item blue">
        <label for="id_comment"  class="rl-label">Comment</label>
        <input type="text" name = "comment">
      </div>
    </div>

    <button type="submit" class="save-button">Submit</button>

Upvotes: 1

user3719458
user3719458

Reputation: 386

On the html you can have something like this

{% csrf_token %}
{{ form.as_p }}

and then proceed with styling or better yet you can use {% crispy %} which personal I find it great based on what you want to archive, your forms.py looks ok.

Upvotes: 0

Related Questions