django 如何获取表单中的数据库字段

fdx2calv  于 2023-01-22  发布在  Go
关注(0)|答案(1)|浏览(306)

我需要什么?我需要把我的网页上的所有字段,我的数据库显示的形式,你可以改变他们并保存到数据库。一个简单的编辑器,我的数据库表。
我有什么?
我的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>

我的网站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

我的网站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}}
            })
        }

这是该页面的www.example.comview.py 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})

我的问题:1)我可以把我的数据库表放在HTML页面上。我可以创建一个空的工作表单(用类),但我不能在一个地方同时做这两件事。2)如果我想能够保存每个字段到数据库(单独),我需要在每行一个表单,或者我可以从一个页面上的一个表单?
对于可视化,我给你一个屏幕截图,它应该看起来像。

bd1hkmkf

bd1hkmkf1#

可以使用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>

更多信息请参见documentation

相关问题