Как получить поля базы данных внутри формы

Что мне нужно? Мне нужно разместить форму на моей странице, где отображаются все поля из моей базы данных, и вы можете изменить их и сохранить в базе данных. Простой редактор для таблицы моей базы данных.

Что у меня есть?

мой HTML:enter code here

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

my models.py

    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):
        return self.name

my forms.py

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}}
            })
        }

Это view.py для этой страницы

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})

Мои вопросы: 1) Я могу поместить таблицу моей базы данных на HTML-страницу. Я могу создать пустую рабочую форму (с классом). НО я не могу сделать и то и другое в одном месте. 2) Если я хочу иметь возможность сохранять каждое поле в базе данных (отдельно), мне нужна форма в каждой строке или я могу сделать это только из 1 формы на странице?

Для наглядности привожу скриншот, как это должно выглядеть. enter image description here

Вы можете использовать параметр instance для передачи объекта форме для его рендеринга. Вы можете попробовать следующим образом:

# 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/{{form.instance.id}}" method="post">
 {{ form.as_p }}
<input type="submit" value="OK">
</form>

Больше информации можно найти в документации.

Вернуться на верх