Пользователи, которые будут использовать форму django и размещать данные

Я создал веб-приложение на django с функцией CRUD, я хочу иметь возможность видеть пользователей (с их именами), которые разместили форму, и видеть полный список данных, которые они разместили, вместе с их именами рядом с данными. Я не знаю, как это закодировать.

Мой код модели:

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
class Agent(models.Model):

Role = [
    ('Manager','Manager'),
    ('Agent','Agent'),
]

QA_Agent = models.OneToOneField(User, on_delete=models.CASCADE, choices=Role)

def __str__(self):
    return self.QA_Agent.username

QA_Outcome = [
('FALSE','FALSE'),
('TRUE','TRUE'),
]

KPA_Outcome = [
   ('Product','Product'),
   ('Pass','Pass'),
   ('Compliance','Compliance'),
   ('Data Capturing','Data Capturing'),
   ('TCF','TCF'),
 ]

HIV_Test = [
    ('YES','YES'),
    ('NO','NO'),
]

AVS = [
    ('PASS', 'PASS'),
    ('FAIL', 'FAIL'),
    ('UNVERIFIED', 'UNVERIFIED'),

]

StartDate = [
    ('1st January','1st January'),
    ('1st February','1st February'),
    ('1st March','1st March'),
    ('1st April','1st April'),
    ('1st May','1st May'),
    ('1st June','1st June'),
    ('1st July','1st July'),
    ('1st August','1st August'),
    ('1st September','1st September'),
    ('1st October','1st October'),
    ('1st November','1st November'),
    ('1st December','1st December'),

]

# Create your models here.
class QA_Models(models.Model):
    Policy_Number = models.CharField(max_length=12)
    Case_Number = models.CharField(max_length=7)
    AVS_Check = models.CharField(choices=AVS, max_length=12)
    Caller_ID = models.CharField(max_length=50)
    Call_duration = models.CharField(max_length=10)
    Start_date = models.CharField(choices=StartDate, max_length=20)
    Premium = models.DecimalField(max_digits=6, decimal_places=2)
    Debit_date = models.CharField(max_length=10)
    Cover_amount = models.CharField(max_length=10)
    QA_Correct = models.CharField(choices=QA_Outcome, max_length=5)
    KPA_1 = models.CharField(choices=KPA_Outcome, max_length=15, null=True)
    KPA_2 = models.CharField(choices=KPA_Outcome, max_length=15, null=True)
    KPA_3 = models.CharField(choices=KPA_Outcome, max_length=15, null=True)
    HIV_Required = models.CharField(choices=HIV_Test,  max_length=3)
    Comment = models.TextField(max_length=200)
    
    def __str__(self):
        return self.Case_Number

и метод post в моем view.py имеет вид

from django.shortcuts import render, redirect
from . models import QA_Models, Agent
from django.contrib.auth.models import User
from . form import QA_Forms
from . decorations import allowed_user

# Create your views here.
@allowed_user(allowed_roles=['Manager','Agent'])
def Home(request):
    TheData = QA_Models.objects.all()
    return render(request, 'Home.html',
                  {'TheData':TheData})   

@allowed_user(allowed_roles=['Manager','Agent'])
def MainPage(request):
    TheForm = QA_Forms
    TheUser = request.user
    if request.method == 'POST':
        TheForm = QA_Forms(request.POST, request.user)
        if TheForm.is_valid():
            #TheForm.user = request.user
            TheForm.save()          
    return render(request, 'MainPage.html', {'TheForm':TheForm,
                                             'TheUser':TheUser})

Мой HTML:

    {% extends "Layout.html" %}

{% block content %}

<h1>Home </h1>
 <div class="container">
        <br>

        <table class="table table-dark table-hover">
            {% for Information in TheData %}
            <tr>
                <td>
                    {{Information.Policy_Number}}<br>
                </td>
                <td>
                   <a href={% url 'DataInformation' Information.id  %}>
                      {{Information.Case_Number}}<br>
                   </a>
                </td>
                <td>
                    {{Information.QA_Correct}}<br>
                </td>


            </tr>
            {% endfor %}

        </table>
 </div>
{% endblock %}

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

Похоже, что то, что вы ищете, потребует создания отдельной модели, которая будет связана с вашей QA_Models. Не стесняйтесь удалить поле комментариев из вашей исходной модели QA_Models.

Давайте посмотрим, как это может выглядеть на практике, создав Comment модель.

Пример модели

class Comment(models.Model):
    qa_model = models.ForeignKey(
        QA_Models,
        on_delete=models.CASCADE,
        null=True,
        blank=True,
        related_name='comments',
    )
    user = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        null=True,
        blank=True,
    )
    content = models.TextField(max_length=400)
    timestamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.content

Это позволит вам просмотреть все комментарии с соответствующим содержанием и пользователем, например, так

Пример шаблона

    <h2>Comments</h2>
    <ul>
    {% for comment in Information.comments.all %}
        <li>{{ comment.content }} - {{ comment.user.username }}</li>
    {% endfor %}
    </ul>
Вернуться на верх