代码之家  ›  专栏  ›  技术社区  ›  Denise

通过编辑表info-Django将数据保存到数据库中

  •  0
  • Denise  · 技术社区  · 6 年前

    我有一个页面“EditStudent”,显示所有缺席者的姓名。此页面允许管理员将其状态从缺席更改为出席,反之亦然,如果需要,可以添加备注。页面中显示的信息涉及两种型号。

    名字列表模型。py:包含所有学生信息,如studId、studName等。

    马卡特模型。py:保存课堂上所有被打分的学生。所以这个模型不保存缺席者的名字。

    所以为了检索缺席者的名字,我对名字列表和MartAtt模型做了一系列的区别。

    我成功地保存了EditStudent页面上除姓名以外的所有更改。

    名模名单。py:

    class Namelist(models.Model): 
        name = models.CharField(max_length=100)
        program = models.CharField(max_length=10)
        year = models.IntegerField(default=1)
        studType = models.CharField(max_length=15)
        courseType = models.CharField(max_length=15)
        nationality = models.CharField(max_length=20)
        VMSAcc = models.CharField(max_length=30)
        classGrp = models.ForeignKey('GroupInfo', on_delete=models.SET_NULL, 
        null=True)
    

    马卡特模型。py:

    class MarkAtt(models.Model):
        STATUS=[
            ('Present', "Present"),
            ('Absent', "Absent")
            ]
    
    
        studName = models.ForeignKey(Namelist,on_delete=models.SET_NULL,blank=True, null=True, default=None)
        classGrp = models.ForeignKey(GroupInfo, on_delete=models.SET_NULL, null=True)
        currentDate = models.DateField(default=now())
        week = models.IntegerField(default=1)
        attendance = models.IntegerField(default=100) #100 is present
        status = models.CharField(max_length=10, blank=True, null=True, choices=STATUS, default="Present")
        remarks = models.CharField(max_length=100, blank=True, null = True, default = " ")
    

    我的观点。py:

    def AbsentStudent(request, id=None):
        start = None
        end = None
        w = 1
        classGrp = None
        attendance = 0
        today = datetime.datetime.now()
        group = GroupInfo.objects.get(id=id)
        q1 = Namelist.objects.filter(classGrp=id).values('name')
        q2 = MarkAtt.objects.all().values('studName__name')
        q3 = q1.difference(q2)
        q4 = Namelist.objects.all()
        q5 = q4|q3
    
    
        form_class = studStatus
        form = form_class(request.POST)
        if request.method == 'POST':
            if form.is_valid():
                a = form.save(commit=False)
                a.currentDate = datetime.datetime.now().date()
                a.classGrp = group
                a.attendance = attendance
                a.week = w 
                a.studName = q5
    
    
                form.save()
                return redirect('editStudStatus',id)
            else:
                form = form = studStatus(request.POST )
    
        context = { 
        'q4' :  q4,
        'group' : group,
        'form' : form,
        'today' :today,
        'w' :w
        }
    
        return render(request,'studDetails.html',context, {'form':form})
    

    我的模板:

    <tbody>
    {% for q in q4 %}
        <tr>
            <td>{{q.name}}</td>
            <td>{{q.id}}</td>
            <form method="post" enctype="multipart/form-data">
            {% csrf_token %}    
                <td>{{form.status }}</td>
                <td>{{form.remarks}}</td>
                <td><button type ="submit" class="btn btn-outline-success" >Submit</button>
            </form></td>
        </tr>   
    

    这是我的表格:

      class studStatus(forms.ModelForm):
         class Meta:
            model = MarkAtt 
            fields = ['status','remarks']
    

    我从这个实现中收到的错误是:

    'NoneType' object has no attribute 'attname'
    

    enter image description here .

    我试图将学生ID作为隐藏文件保存在数据库中。但是studid没有显示在模板中。

    如何从未保存在数据库中且与名称列表模型匹配的查询结果中获取studId?

    0 回复  |  直到 6 年前