Несколько списков Todo в Django - PullRequest
1 голос
/ 15 июня 2019

В настоящее время я изучаю Django и, как стартовый проект, я подумал о создании сайта списка Todo.

Мне нужна помощь в организации представлений для отображения нескольких списков задач в "название": "текст" своего рода. Например: «Июньская задача»: «1. Учиться Джанго», «2. Создать приложение Джанго» и т. д.

Пока это то, что я сделал:

todo.html HTML:

<h1>Todo List!</h1>
<ul>
    {% for todo in all_items %}
        <li><a href="/todos/{{todo.id}}">{{todo.title}}</a>: {{todo.text}}</li>
    {% endfor %}
</ul>

<form action="/addTodo/" method="POST">{% csrf_token %}
    <h3>Create New Todo List</h3>
    <input type="text" name="text", placeholder="Enter Title Here">
    <input type="Submit" name="Create">
</form>

models.py:

class SimpleTodo(models.Model):
    title = models.CharField(max_length = 100)
    text = models.CharField(max_length = 100)

    def __str__(self):
        return (self.title)


views.py:

def TodoView(request):
    all_items = SimpleTodo.objects.all()
    return render(request, 'blog/todo.html', {'all_items':all_items})

Токовый выход:

Todo List!
- June: Todo List #1
- June: My first todo
- June: My second todo
- Aug: My First todo Aug

Ожидаемый результат:

Todo List!
- June: 
    Todo List 
    1 My first todo
    My second todo
- Aug: 
    My First todo Aug

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

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

Если вы хотите иерархию, разделите модель на две части следующим образом (я исключил str методы для экономии места.

class SimpleTodo(models.Model):
    title = models.CharField(max_length = 100)

Class TodoText(models.Model):
    title = models.ForeignKey(SimpleTodo)
    text = models.CharField(max_length = 100)

Я не думаю, что ваше мнение имеетчтобы изменить. Вам нужно изменить свой шаблон, чтобы иметь вложенные циклы, такие как.

<h1>Todo List!</h1>
<ul>
    {% for todo in all_items %}
        <li><a href="/todos/{{todo.id}}">{{todo.title}}</a></li>
             <ul>
             {% for text in todo.TodoText.all %}
                  <li>{{text.text}}</li>
             {% endfor %}
             </ul>
    {% endfor %}
</ul>

Я не проверял это, поэтому, возможно, где-то ошибка, но, надеюсь, это приведет вас на правильный путь.

0 голосов
/ 15 июня 2019

Есть книга под названием Test Driven Development с Pytho n, которая делает именно это. Он показывает тестовую разработку с использованием Django, а пример проекта представляет собой список дел. Еще лучше, если вы можете прочитать его бесплатно в режиме онлайн и задать автору вопросы, и он довольно быстро отвечает большую часть времени.

Есть чему поучиться!

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