【问题标题】:display a list of items in a select box in my html template in django 2.2在 django 2.2 的我的 html 模板中的选择框中显示项目列表
【发布时间】:2019-10-26 16:03:16
【问题描述】:

我有一个部门列表,希望在选择下拉列表中显示,但未显示?

这是一个值班日志应用,希望用户能够从下拉列表中选择部门。

这是我的意见.py

def index(request):  # the index view
    logs = Dutylog.objects.all()  # querying all logs with the object manager
    departments = Department.objects.all()  # getting all departments with object manager
    if request.method == "POST":  # checking if the request method is a POST
        if "taskAdd" in request.POST:  # checking if there is a request to add a logo
            title = request.POST["description"]  # title
            date = str(request.POST["date"])  # date
            department = request.POST["department_select"]  # department
            content = title + " -- " + date + " " + department  # content
            Log = Dutylog(title=title, content=content, due_date=date, department=Department.objects.get(name=department))
            Log.save()  # saving the log
            return redirect("/")  # reloading the page

        if "taskDelete" in request.POST:  # checking if there is a request to delete a log
            checkedlist = request.POST["checkedbox"]  # checked logs to be deleted
            for log_id in checkedlist:
                Log = Dutylog.objects.get(id=int(log_id))  # getting log id
                Log.delete()  # deleting logo

    return render(request, "index.html", {"logs": logs, "department": departments})

这是我的models.py

class Department(models.Model):  # The Category table name that inherits models.Model
    name = models.CharField(max_length=100)  # Like a varchar

    class Meta:
        verbose_name = ("Department")
        verbose_name_plural = ("Departments")

    def __str__(self):
        return self.name  # name to be shown when called


class Dutylog(models.Model):  # Dutylog able name that inherits models.Model
    title = models.CharField(max_length=250)  # a varchar
    content = models.TextField(blank=True)  # a text field
    created = models.DateField(default=timezone.now().strftime("%Y-%m-%d"))  # a date
    due_date = models.DateField(default=timezone.now().strftime("%Y-%m-%d"))  # a date
    department = models.ForeignKey(Department, default="general", on_delete=models.PROTECT)  # a foreignkey

    class Meta:
        ordering = ["-created"]  # ordering by the created field

    def __str__(self):
        return self.title  # name to be shown when called

和html模板

<div class="inputContainer half last">
    <i class="fa fa-caret-down selectArrow"></i>
    <select id="department" class="taskCategory" name="department_select">
        <option class="disabled" value="">Choose a Department</option>
        {% for department in departments %}
            <option class="" value="{{ department.name }}" name="{{ department.name }}">{{ department.name }}</option>
        {% endfor %}
    </select>
    <label for="department">Department</label>
</div>

【问题讨论】:

    标签: python django templates


    【解决方案1】:

    您将部门作为字典中的键传递,但您正在与模板中的部门进行迭代

    所以改变这个

    return render(request, "index.html", {"logs": logs, "department": departments
    

    return render(request, "index.html", {"logs": logs, "departments": departments
    

    【讨论】:

      猜你喜欢
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 2021-07-27
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2012-04-17
      相关资源
      最近更新 更多