从auth\u us提供的下拉菜单

2024-03-29 10:07:14 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我到了极限。我需要创建一个数据库,允许我选择用户名存储在auth\u user表中的'用户名'列。这个型号.py看起来像这样:

from django.db import models
from django.contrib.auth.models import User

class basehw(models.Model):

    name = models.ForeignKey(User)
    dept = models.CharField(verbose_name='dept', max_length=50, null=False)
    location = models.CharField(verbose_name='location', max_length=50, null=False)

形式:

    from django.forms import ModelForm
from baza.models import basehw


    class baseForm(ModelForm):
        class Meta:
            def __init__(self):
                pass

            model = basehw

你知道吗添加.html模板(目前是一个文本字段):

    {% extends 'base/base.html' %}
{% load staticfiles %}
{% block content %}

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <script type="text/javascript" charset="utf-8" language="javascript" src="{% static 'base/js/dataTables.bootstrap.js' %}"></script> </head>
    <body>

<form action="{% url 'baza.views.add' %}" method="post">{% csrf_token %}
<div class="row">

<div class="col-md-4">
        <label for="name">name:</label>
        <input type="text" class="form-control" id="name" placeholder="name" name="name">
</div>

<div class="col-md-4">
    <label for="site">site:</label>
        <select class="form-control" id="site" name="site">
            <option value="W16">W16</option>
            <option value="W1602">W1602</option>
        </select>
</div>

<div class="col-md-4">
    <label for="hostname">hostname:</label>
    <input type="text" class="form-control" id="hostname" name="hostname" placeholder="hostname">
</div>

<div class="col-md-4">
    <label for="SN">serial number:</label>
    <input type="text" class="form-control" id="SN" name="SN" placeholder="serial number">
</div>

    </div>

    <br />
    <input class="btn btn-primary" type="submit" value="save"/>
    <a href="{% url 'baza.views.Table' %}" class="btn btn-danger" type="button" >cancel</a>
    <br /><br />


</form>
</body>
</html>
{% endblock %}

你知道吗视图.py地址:

def Table(request):
    table = basehw.objects.all
    return render_to_response('../templates/baza/baza.html',
        {'table': table},
        context_instance=RequestContext(request))

def add(request):
    if request.method == 'POST':
        form = baseForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/baza/')
    else:
        form = baseForm()

    return render(request, 'baza/add.html', {
        'form': form,
    })

使用下面的模型,我只能通过使用整个记录的id来填充'name'字段。也就是说,当我输入“1”时,我得到的用户名被保存为auth\u user表中的第一个用户名,当输入“2”时,第二个用户名。。。此外,这样的模型只允许我更新“name”字段—其他字段都不可能更改。这个应用程序使用一个HTML模板,我想把'名称'字段变成下拉菜单。所以问题是:

  • 如何创建模型以使所有字段都可编辑?你知道吗
  • 我应该怎么做才能从下拉菜单中选择用户名而不是ID(从auth\u user提供的下拉菜单)?我应该如何用HTML描述?你知道吗

非常感谢!你知道吗


Tags: textnamedivformauthidmodelsrequest
1条回答
网友
1楼 · 发布于 2024-03-29 10:07:14

这不是为Django表单编写模板的方式。您需要使用表单对象提供的表单字段。例如:

<div class="col-md-4">
    {{ form.name.label_tag }}
    {{ form.name }}
    {{ form.name.errors }}
</div>

相关问题 更多 >