How to get database fields inside a form

What I need? I need to put a form on my page, where all fields from my database are shown, and you can change them and save to database. A simple editor for my database table.

What I have?

my HTML:enter code here

            <td>{{ }}</td>
            <td>{{ form.token }}</td>
            <td><button class="btn btn-lg btn-success w-100">Add</button></td>


    from django.db import models

# Create your models here.
class TrafficSources(models.Model):
    name = models.CharField('name', max_length=250)
    token = models.CharField('token', max_length=250)

    def __str__(self):


from .models import TrafficSources
from django.forms import ModelForm, TextInput

class TrafficSourcesForm(ModelForm):
    class Meta:
        model = TrafficSources

        fields = ['name', 'token']

        widgets = {
            'name': TextInput(attrs={
                'class': 'form-control',
                'placeholder': {{here I need the name from database table}}
            'token': TextInput(attrs={
                'class': 'form-control',
                'placeholder': {{here I need the token from database table}}

This is the for that page

def settings(request):
    ts = TrafficSources.objects.all()
    form = TrafficSourcesForm()
    data = {
        'form': form
    url = 'url for API request'
    ts_token = TrafficSources.objects.filter(name='propeller')
    for h in ts_token:
        token = h.token
    headers = {'Authorization': 'Bearer ' + token}
    res = requests.get(url, headers=headers)
    return render(request, 'mainpage/dashboard.html', {'ts': ts, 'js': res.text, 'hd': headers, 'form' : form})

My questions: 1) I can put my database table on the HTML page. I can create an empty working form (with the class) BUT I can't do both in one place. 2) If I want be able to save every field to the database ( separately) I need a a form in every row or I can do it from just a 1 form on a page?

For visualization I give you a screenshot how it should look like. enter image description here

You can use instance parameter for passing the object to the form to render it. You can try like this:

# view
def settings(request):
    forms = [TrafficSourcesForm(instance=x) for x in TrafficSources.objects.all()]
    return render(request, 'mainpage/dashboard.html', {'ts': ts, 'js': res.text, 'hd': headers, 'forms' : forms})

# template
{% for form in forms %}
<form action="/your-url/{{}}" method="post">
 {{ form.as_p }}
<input type="submit" value="OK">

More information can be found in documentation.

Back to Top