TypeError at /admin_update/2/ BaseForm.__init__() got an unexpected keyword argument 'instance'

Я пытаюсь обновить представление таблицы. Я передал первичный ключ в update_requests.html, чтобы я мог предварительно заполнить форму моделью с первичным ключом. Однако я думаю, что проблема в модели. Когда я пытаюсь получить доступ к update_requests.html, он выдает ошибку, описанную в заголовке. Может ли кто-нибудь помочь мне с этим?

urls.py `

    path('admin_update/<str:pk>/', views.AdminUpdateRequests, name='admin_update'),

`

views.py `

def AdminManageRequests(request):
    lessons = Lesson.objects.all()
    return render(request,'admin/manage_requests.html',{'lessons':lessons})


def AdminUpdateRequests(request, lesson_id):
    lesson = Lesson.objects.get(pk=lesson_id)
    form = StudentRequestForm(request.POST or None, instance=lesson)
    context = {
        'lesson':lesson, 'form':form
    }
    return render(request, 'admin/update_requests.html',context)

`

models.py

class Lesson(models.Model):
    lesson_id   = models.AutoField(primary_key=True)
    lesson_name = models.CharField(max_length=255)
    student     = models.ForeignKey(User,on_delete=models.DO_NOTHING,related_name='studying')
    teacher     = models.ForeignKey(User,on_delete=models.CASCADE, related_name='teaching')
    start_time  = models.DateTimeField(default=timezone.now)
    interval    = models.IntegerField(default=0)
    duration    = models.IntegerField(default=0)
    created_at  = models.DateTimeField(default=timezone.now, blank=True)
    updated_at  = models.DateTimeField(default=timezone.now, blank=True)
    is_request  = models.BooleanField(default=True)
    number      = models.IntegerField(default=-1)
    price       = models.IntegerField(default=-1, blank=True)

manage_requests.html `

{% extends 'admin/admin_home_base.html' %}
{% block admin_content %}
<div>
  <h3 class="display-8" style="text-align:center">
      Admin Lesson Request Management
  </h3>
  <hr class="my-4">
  <p style="text-align:center">
      You can view fulfilled and unfulfilled lesson requests.
  </p>
  <p class="lead" style="text-align:center">
    {% include 'admin/partials/fulfilled_lessons.html' %}
    <br>
    {% include 'admin/partials/unfulfilled_lessons.html' %}
  </p>
</div>
{% endblock %}

lessons_table_base.html `

`

<div class="card">
  <div class="card-header">
    <h5 class="card-title">{% block card_title %}{% endblock %}</h5>
      <div class="card-body table-responsive p-0">
        <table class="table table-hover text-nowrap">
          <thead>
            <tr>
              <th>Lesson ID</th>
              <th>Lesson Name</th>
              <th>Student</th>
              <th>Teacher</th>
              <th>Interval (Days)</th>
              <th>Duration (Minutes)</th>
              <th></th>
            </tr>
          </thead>
          <tbody>
          {% for lesson in lessons %}                       
          {% block lessons_content %}
          {% endblock %}
          {% endfor %}
          </tbody>
        </table>
      </div>
  </div>
</div>

`

fulfilled_lessons.html `

`

{% extends 'admin/partials/lessons_table_base.html' %}
{% load widget_tweaks %}
{% block card_title %}
Fulfilled Requests&nbsp;&nbsp;<i class="bi-send-check-fill"></i>
{% endblock %}
{% block lessons_content %}
{% if not lesson.is_request %}
    <tr>
    <td>{{ lesson.lesson_id }}</td>
    <td>{{ lesson.lesson_name }}</td>
    <td>{{ lesson.student }}</td>
    <td>{{ lesson.teacher }}</td>
    <td>{{ lesson.interval }}</td>
    <td>{{ lesson.duration }}</td>
    <td>
        <!-- admin edit lesson here -->
        <a href="{% url 'admin_update' lesson.lesson_id %}">update</a>  
        <!-- admin delete lesson here -->
        <a href="#" class="nav-link" role="button" data-bs-toggle="tooltip" title="Remove lesson">
            <span class="bi-dash-square"></span>
        </a>
    </td>
    </tr>
{% endif %}
{% endblock %}



`

updates_requests.html (будет добавлен дополнительный код, когда проблема будет решена.) `

`

{% extends 'admin/admin_home_base.html' %}
{% block admin_content %}
<div>
    <h2  style="text-align:center">
    Update Lesson Request
    </h2>
    <hr class="my-4">
    <p style="text-align:center">
        You can update lessons to the system.
    </p>
    <form action="" method=POST>
        {% csrf_token %}
        {{form.as_p}}
        <input type="submit" value="Update" class="btn btn-secondary">
    </form>
   
</div>
{% endblock %}

`

forms.py `

class AdminLessonForm(forms.Form):
    """Form enabling admin users to create new lessons."""
    subject_choices  = [(i, i) for i in Lesson.subjects()]
    duration_choices = [(i, i) for i in Lesson.durations()]
    interval_choices = [(i, i) for i in Lesson.intervals()]
    lesson_request = forms.ModelChoiceField(label="Lesson Request",queryset=Lesson.objects.filter(is_request=True), widget=forms.Select(attrs={"class":"form-control"}))
    lesson_name    = forms.ChoiceField(label="Lesson name", choices=subject_choices, widget=forms.Select(attrs={"class":"form-control"}))
    teacher        = forms.ModelChoiceField(label="Teacher",queryset=Teacher.teacher.all(), widget=forms.Select(attrs={"class":"form-control"}))
    start_time     = forms.DateTimeField(label="Start time [Day/Month/Year Hour:Minute]",input_formats=['%d/%m/%Y %H:%M'],
                                        widget=forms.DateTimeInput(format='%d/%m/%Y %H:%M',attrs={'class':'form-control'}))
    interval       = forms.ChoiceField(label="Interval [Days]", choices=interval_choices, widget=forms.Select(attrs={"class":"form-control"}))
    duration       = forms.ChoiceField(label="Duration [Minutes]", choices=duration_choices, widget=forms.Select(attrs={"class":"form-control"}))
    number         = forms.IntegerField(label="Number of Lessons", widget=forms.NumberInput(attrs={"class":"form-control"}))

    def save(self):
        """Create a new lesson."""

        request = self.cleaned_data.get('lesson_request')
        lesson = Lesson.objects.create(
            lesson_name = self.cleaned_data.get('lesson_name'),
            student     = request.student,
            teacher     = self.cleaned_data.get('teacher'),
            start_time  = self.cleaned_data.get('start_time'),
            interval    = int(self.cleaned_data.get('interval')),
            duration    = int(self.cleaned_data.get('duration')),
            number      = self.cleaned_data.get('number'),
            is_request  = False,
        )
        lesson.price = self.calculate_price(lesson.duration, lesson.number)
        request.delete()
        return lesson

`

отступления `

Internal Server Error: /admin_update/2/
Traceback (most recent call last):
  File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/jaeholee/SEG-Small-Group-Project/hyena/lessons/views.py", line 60, in AdminUpdateRequests
    form = AdminLessonForm(instance=lesson)
TypeError: BaseForm.__init__() got an unexpected keyword argument 'instance'

`

Я не знаю, что попробовать

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