отобразить список элементов в поле выбора в моем HTML-шаблон в Django 2.2 - PullRequest
0 голосов
/ 26 октября 2019

У меня есть список отделов, которые я хочу показать в выпадающем списке, но они не отображаются?

Это приложение-дежурный журнал, и пользователь хочет, чтобы из выпадающего списка можно было выбрать отдел.

Вот мои views.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>

1 Ответ

1 голос
/ 27 октября 2019

Вы передаете отдел в качестве ключа в своем словаре, но итерируете с отделами в своем шаблоне

, поэтому измените это значение

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

на

return render(request, "index.html", {"logs": logs, "departments": departments
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...