首页 > 解决方案 > 更新 Django 数据库的问题

问题描述

大家好,我在更新数据库基础列表中的数据时遇到了困难。呈现编辑页面,但未显示任何输入表单。

大家好,我在更新数据库基础列表中的数据时遇到了困难。呈现编辑页面,但未显示任何输入表单。

视图.py

def edit_result(request, id): 
    instance = StudentResult.objects.filter().first()
    form = ResultModelForm(request.POST or None, instance=instance)
    if form.is_valid():
          form.save()
          return redirect('studentportal:student_detail')
          
    
          
    return render (request,'studentportal/edit_result.html', {'form':form })
          
         

网址.py

path('edit_result/<int:id>', views.edit_result, name ="edit_result")

模型.py

class Student(models.Model):
    userprofile = models.ForeignKey(UserProfileInfo, on_delete=models.CASCADE, related_name='myuser')
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    profile_pic = models.ImageField(upload_to=student_image, verbose_name="ProfilePicture", blank=True)
    level = models.IntegerField()
    guardian_email = models.EmailField()
    guardian_phone = models.IntegerField()
    
    def __str__(self):
        return self.first_name
    
    def get_absolute_url(self):
        
        
        return reverse("studentportal:student_detail", kwargs={"pk": self.id}) 
  
class StudentResult(models.Model):
    
     student = models.ForeignKey(Student, on_delete=models.CASCADE, related_name='myresult')
     
     english = 'english'
     mathematic = 'mathematic'
     physic = 'physic'
     chemistry = 'chemistry'
     computer = 'computer'
     agric = 'agric'
     subject = [
        (english, 'english'),
        (mathematic, 'mathematic'),
        (physic, 'physic'),
        (chemistry, 'chemistry'),
        (computer, 'computer'),
        (agric, 'agric'),
        
     ]
     subject = models.CharField(max_length=50, choices=subject)

     
    # subject = models.CharField(max_length=50)
     exam = models.IntegerField()
     test = models.IntegerField()
     total = models.IntegerField()
     
     def __str__(self):
         return self.subject
 

表格.py

class StudentModelForm(forms.ModelForm):
    class Meta:
        model = Student
        fields = ('userprofile','first_name','last_name','profile_pic','level','guardian_email','guardian_phone')
        
        
class ResultModelForm(forms.ModelForm):
    class Meta:
        model = StudentResult
        fields = ('student','subject','test','exam','total')
        

编辑按钮链接所在的 Temple html

    {% for check in student.myresult.all %}
    <tr>
        
        <td>{{ check }}</td>
        <td>{{ check.test }}</td>
        <td>{{ check.exam }}</td>
        <td>{{ check.total }}</td>
        <td><div><a href="{% url 'studentportal:edit_result' student.id %}"><i class="fa fa-pencil-square-o"></i> </a>
        </div></td>
        <td><div><a href=" url 'studentportal:delete_result'  "><i class="fa fa-trash"></i> </a>
        </div></td>
        
    </tr>
      {% endfor %}
</table>
        
</div>
    ```
**Error message**

DoesNotExist at /edit_result/1
StudentResult matching query does not exist.
Request Method: GET
Request URL:    http://127.0.0.1:8000/edit_result/1
Django Version: 3.2
Exception Type: DoesNotExist
Exception Value:    
StudentResult matching query does not exist.
Exception Location: /data/data/com.termux/files/usr/lib/python3.9/site-packages/django/db/models/query.py, line 435, in get
Python Executable:  /data/data/com.termux/files/usr/bin/python
Python Version: 3.9.5
Python Path:    
['/storage/emulated/0/schnew',
 '/data/data/com.termux/files/usr/lib/python39.zip',
 '/data/data/com.termux/files/usr/lib/python3.9',
 '/data/data/com.termux/files/usr/lib/python3.9/lib-dynload',
 '/data/data/com.termux/files/usr/lib/python3.9/site-packages']
Server time:    Sat, 29 May 2021 17:19:42 +0000
Traceback Switch to copy-and-paste view
/data/data/com.termux/files/usr/lib/python3.9/site-packages/django/core/handlers/exception.py, line 47, in inner
                response = get_response(request) …
▶ Local vars
/data/data/com.termux/files/usr/lib/python3.9/site-packages/django/core/handlers/base.py, line 181, in _get_response
                response = wrapped_callback(request, *callback_args, **callback_kwargs) …
▶ Local vars
/storage/emulated/0/schnew/studentportal/views.py, line 127, in edit_result
    instance = StudentResult.objects.get(id=id) …
▶ Local vars
/data/data/com.termux/files/usr/lib/python3.9/site-packages/django/db/models/manager.py, line 85, in manager_method
                return getattr(self.get_queryset(), name)(*args, **kwargs) …
▶ Local vars
/data/data/com.termux/files/usr/lib/python3.9/site-packages/django/db/models/query.py, line 435, in get
            raise self.model.DoesNotExist( …
▶ Local vars

![enter image description here](https://i.stack.imgur.com/CwVvM.png)

标签: pythondjango

解决方案


  • 您正在尝试访问尚未作为上下文传递给模板的变量

推荐阅读