NoReverseMatch для рендеринга формы - PullRequest
2 голосов
/ 20 марта 2019

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

Но проблема в том, что я не могу предварительно заполнить поля формы HTML. Ниже приведен мой код, и я не могу получить вывод.

HTML-код в таблице

<td>{{ info.university_code }}</td>
         <td>{{ info.avg_grescore }}</td>
         <td>{{ info.avg_english_score }}</td>
         <td>{{ info.avg_undergradcgpa }} CGPA</td>
         <td>{{ info.avg_workex_months }} Months</td>
         <td>{{ info.avg_research_skills }}%</td>
         <td>{{ info.avg_acceptancepercentage }}</td>
          <td><a href="{% url 'editSummary' univ_code=info.university_code  %}"

Views.py (здесь присутствует вся моя логика, которая не работает и выдает ошибку)

def editSummary(request,univ_code):

    if request.method == "POST":
        form = UniversitySummaryForm(request.POST or None, instance =   
        uiversity)
        if form.is_valid():
            form.save()
            return redirect('/AdminHome')

        else:
            form = UniversityInfoForm()

            form.fields["university_code"].queryset =UniversityNames.objects.filter(university_code=request.university_code)

    template_vars = RequestContext(request, {
        "form": form,
        "university_code": request.university_code
    })
    return render_to_response(
        "PredictiveAcceptance/AdminUniversitySummary.html",
        template_vars)

Models.py (для полей базы данных)

class UniversitySummaries(models.Model):
    university_code = models.ForeignKey('UniversityNames',
        models.DO_NOTHING, db_column='university_code', primary_key=True)
    avg_grescore = models.IntegerField()
    avg_english_score = models.IntegerField()
    avg_undergradcgpa = models.IntegerField()
    avg_workex_months = models.IntegerField()
    avg_research_skills = models.IntegerField()
    avg_acceptancepercentage = models.IntegerField()
    created_on = models.DateTimeField(auto_now_add = True)

Файл Forms.py

class UniversitySummaryForm(forms.ModelForm):

    class Meta:
        model = UniversitySummaries
        fields = ('university_code', 'avg_grescore',
            'avg_english_score', 'avg_undergradcgpa', 'avg_workex_months',
            'avg_research_skills', 'avg_acceptancepercentage')

urls.py

urlpatterns = [
    url(r'^AdminHome/$', AdminSiteViews.home, name='home'),
    url(r'^AdminListOfUniversity/$', AdminSiteViews.list, name='list'),
    url(r'^AdminUniversitySummary/$', AdminSiteViews.summary, name='summary'),
    url(r'^editSummary/<univ_code>/$', AdminSiteViews.editSummary, name='editSummary'),
]

введите описание изображения здесь

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

В вашем шаблоне нет ничего под названием info, поэтому вы не можете использовать info.university_code в качестве параметра для тега url.

Вы можете исправить это, просто выполнив {% url 'editSummary' univ_code=university_code %},но остальная часть вашего шаблона все равно будет сломана.

0 голосов
/ 20 марта 2019

Ошибка не имеет ничего общего с самой формой. Вместо этого шаблон содержит тег URL с вызовом распознавателя, и это не удается. Средство распознавания не может создать URL для этого тега:

<a href="{% url 'editSummary' univ_code=info.university_code  %}"

Здесь вы используете представление объекта внешнего ключа в качестве значения univ_code, но info.university_code - это строковое представление объекта типа UniversityNames.

university_code = models.ForeignKey('UniversityNames',
    models.DO_NOTHING, db_column='university_code', primary_key=True)

Вы не опубликовали модель, но я полагаю, что тег URL должен выглядеть следующим образом:

<a href="{% url 'editSummary' univ_code=info.university_code.university_code  %}"

выводится из этой строки в вашем коде:

UniversityNames.objects.filter(university_code=request.university_code)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...