я хочу, чтобы мое представление создания и представление списка находились на одной странице - PullRequest
0 голосов
/ 04 августа 2020

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

from django.shortcuts import render
from django.views.generic import ListView, CreateView
from .models import simpleList
from django.urls import reverse_lazy
# Create your views here.


class CreateList(CreateView):
    model = simpleList
    template_name = 'create_list.html'
    fields = ('title', )
    success_url = reverse_lazy('create_list')

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

    def ListListView(request):
        current_user = request.user
        user_list = simpleList.objects.filter(author=current_user)
        return user_list

это мой html: -

{% extends 'base.html' %}

{% block title %}Create{% endblock title %}

{% block content %}
<form method="POST">{% csrf_token %}
    {{ form.as_p }}
    <button class="btn btn-info" type="submit">Add</button>
</form>

<h2>simpleList</h2>
<table class="table table-hover">
    <thead>
        <tr>
            <th scope="col">S.No</th>
            <th scope="col">Task</th>
            <th scope="col">Done</th>
        </tr>
    </thead>
</table>
<div>
    {% for simpleList in user_list %}
    <table class="table table-hover">
        <thead style="display: none;">
            <tr>
                <th scope="col">S.No</th>
                <th scope="col">Task</th>
                <th scope="col">Done</th>
            </tr>
        </thead>
        <div>
            <tbody>
                <tr class="table-primary">
                    <th scope="row">{{ simpleList.pk }}</th>
                    <td style="max-width: 100px;  word-break: break-all;">
                        {{ simpleList.title }}
                    </td>
                    <td>
                    </td>
                </tr>
            </tbody>
        </div>
    </table>
</div>

{% endfor %}

{% endblock content %}

1 Ответ

0 голосов
/ 06 августа 2020

Вы можете унаследовать от CreateView и ListView и переопределить метод get_queryset для фильтрации по автору.

from django.shortcuts import render
from django.views.generic import ListView, CreateView
from .models import simpleList
from django.urls import reverse_lazy
# Create your views here.


class CreateList(CreateView, ListView):
    model = simpleList
    template_name = 'create_list.html'
    fields = ('title', )
    success_url = reverse_lazy('create_list')

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

    def get_queryset(self):
        queryset = super().get_queryset()
        current_user = self.request.user
        queryset = queryset.filter(author=current_user)
        return queryset

В шаблоне (for тег шаблона) вместо использования user_list вы можете использовать object_list.

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