сохранить данные в базе данных, отредактировав информацию таблицы - Django - PullRequest
0 голосов
/ 23 октября 2019

У меня есть страница "EditStudent", которая отображает все заочное имя. На этой странице администратор может изменить свой статус с отсутствующего на настоящий или наоборот, при необходимости добавить замечания. Информация, отображаемая на странице, касалась двух моделей.

Namelist model.py: содержит всю информацию о студентах, такую ​​как studId, studName и другие.

MarkAtt model.py: сохранить всех посещенных учеников, которые были отмечены во время урока. Таким образом, эта модель не сохраняет имя отсутствующих.

Таким образом, чтобы получить имя отсутствующего, я установил разницу между списком имен и моделями MartAtt.

Мне удалось сохранить все изменения, сделанные на странице EditStudent, кроме имени.

Список имен models.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)

MarkAtt models.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 = " ")

Мои Views.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.

Я попытался поместить идентификатор студента в качестве скрытого файла, чтобы сохранить его в базе данных. но студид не показывается в шаблоне.

Как получить StudId из результата запроса, который не сохранен в базе данных и не соответствует модели списка имен?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...