Django - Обновление поля модели через форму

У меня есть модель, которая представляет значения, которые пользователи отправляют через форму при подаче заявки на спонсорство.

class ApplicationData(models.Model) :

class Status(models.TextChoices):
    REJECTED = 'Rejected'
    PENDING = 'Pending'
    ACCEPTED = 'Accepted'

"""Define table for Applications in database"""
user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
organisationName = models.CharField(max_length=200, null=True, blank=True)
projectTitle = models.CharField(max_length=200, null=True, blank=True)
CH_OSCR_number = models.CharField(max_length=20, unique=True, blank=True, null=True, )
projectDesc = models.TextField(max_length=300, null=True, blank=True)
userGroupDesc = models.TextField(max_length=300, null=True, blank=True)
learningOpp = models.TextField(max_length=300, null=True, blank=True)
keyPartnersWork = models.TextField(max_length=300, null=True, blank=True)
projImpactClimate = models.TextField(max_length=300, null=True, blank=True)
projSupportLocBus = models.TextField(max_length=300, null=True, blank=True)
proContribution = models.TextField(max_length=300, null=True, blank=True)

length = models.IntegerField(null=True, blank=True)
application_complete = models.BooleanField(default=False)
date_of_application = models.DateField(null=True, blank=True)
reviewed = models.BooleanField(default=False)
app_status = models.TextField(choices = Status.choices, default = Status.PENDING)

В системе существует 3 различных типа пользователей. После того, как заявитель подает заявку, сотрудники могут просматривать детали поданной заявки на специальной странице. Я пытаюсь добавить форму на эту страницу, где сотрудники смогут изменить статус заявки (app_status в модели).

Вот мои попытки: Вот форма для обновления поля.

class UpdateAppStatus(forms.ModelForm):

class Meta:
    model = ApplicationData
    fields = ('app_status',)
    labels = {'app_status':'Change application status?'}

Это представление - оно отображает детали приложения, и я также пытаюсь добавить эту функциональность для обновления статуса.

def view_application_status(request, id):
admin = True if request.user.is_superuser else False
application = ApplicationData.objects.get(id = id)
application_form = ApplicationForm(instance=application)
comments = Comments.objects.filter(application = application)
if request.user.is_staff:
    statusform = UpdateAppStatus()
    if request.method == 'POST':
        satusform = UpdateAppStatus(request.POST)
        if satusform.is_valid():
            statusform.save()
        else:
            print(satusform.errors)

    return render(request, 'fund/application_view.html', {'application':application, 'application_form' :application_form, 'comments':comments, 'admin':admin,'statusform':statusform})
print(comments)
for comment in comments:
    print(comment.comment)
else:
    return render(request, 'fund/application_view.html', {'application':application, 'application_form' :application_form, 'comments':comments, 'admin':admin})

А вот html часть:

<main role="main" class="inner cover">
<div class="container-fluid">
    <div class="cover-container d-flex h-100 p-3 mx-auto flex-column">
        <h1 class="cover-heading text-center">Application Status</h1>
        <div class="cover-container d-flex h-100 p-3 mx-auto flex-column">
          {% if request.user.is_staff %}
          <form id = "ReviewForm" method="post" action="" enctype="multipart/form-data">
            {% csrf_token %}
            <label for="app_status"><strong>{{statusform.app_status.label}}</strong></label>
            {{ statusform.app_status }}
            <input type="submit" value="Submit" class="btn btn-primary" onclick="">
          </form>
          {% endif %}
        </div>

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

This is how it looks

Вернуться на верх