从auth_user提供的下拉菜单

时间:2014-11-06 07:31:31

标签: python html django

所以我走到了系绳的尽头。我需要创建一个数据库,允许我在'用户名'中选择存储在auth_user表中的用户名。柱。 model.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

add.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 %}

views.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,
    })

使用以下模型,我可以填充&#39;名称&#39;字段只能使用整个记录的id。也就是说,当我输入&#39; 1&#39;时,我会在auth_user表中获得第一个保存的用户名,当第二个保存时,第二个... ...此外,这样的模型允许我更新了这个名字&#39;仅限字段 - 无法更改其他字段。该应用程序使用HTML模板,我想转换名称&#39;字段到下拉菜单。所以问题是:

  • 如何创建模型以使所有字段都可编辑?
  • 如何从下拉菜单(从auth_user提供的下拉菜单)中选择用户名而不是ID?我该如何用HTML描述?

提前非常感谢!

1 个答案:

答案 0 :(得分:0)

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

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