简体   繁体   English

我正在尝试从另一个 model 更新布尔字段。我有 2 个 model studentcourse 和 Examgrade 'RelatedManager' object 没有属性 'show'

[英]any I'm trying to update a booleanfield from another model. i have 2 model studentcourse and Examgrade 'RelatedManager' object has no attribute 'show'

I have 2 models which are StudentCourses and ExamGrade, below are the models and attribute important which i would like to update on StudentCourses when ExamGrade is created我有 2 个模型,分别是 StudentCourses 和 ExamGrade,下面是重要的模型和属性,我想在创建 ExamGrade 时更新 StudentCourses

models.py模型.py

class StudentCourses(models.Model):
   id = models.AutoField(primary_key=True)
   student = models.ForeignKey(Students, related_name='studentcourses')
   studentcourse = models.ForeignKey(Courses, related_name='studentcourses', null=True)
   show = models.BooleanField(default=False)

class ExamGrade(models.Model):
    id = models.AutoField(primary_key=True)
    lecturer = models.ForeignKey(Lecturers, null=True, related_name='examgrades')
    student = models.ForeignKey(StudentCourses, related_name='examgrades')

class Students(models.Model):
   id = models.AutoField(primary_key=True)
   admin = models.OneToOneField(CustomUser, on_delete=models.CASCADE, related_name="students")
   profile_pic = models.ImageField(default='default.jpg', upload_to='uploads/student')
   middle_name = models.CharField(max_length=255)
   gender = models.CharField(max_length=255)
   status = models.CharField(max_length=255, null=True)
country = models.CharField(max_length=255, default=None, null=True, blank=True)
   state = models.CharField(max_length=255, default=None, null=True, blank=True)
   local = models.CharField(max_length=255, default=None, null=True, blank=True)
   school = models.ForeignKey(School, null=True, on_delete=models.CASCADE)
   dob = models.CharField(max_length=100, default=None, blank=True, null=True)
   guardian_name = models.CharField(max_length=11, null=True)
   mobile = models.CharField(max_length=12, null=True, default=None)
   faculty = models.ForeignKey(Faculty, null=True, blank=True, on_delete=models.CASCADE)
   department = models.ForeignKey(Department, null=True, blank=True, on_delete=models.CASCADE)
   level = models.ForeignKey(Level, null=True, blank=True, on_delete=models.CASCADE)
   semester = models.ForeignKey('Semester', null=True, blank=True, on_delete=models.CASCADE)
   session = models.ForeignKey(SessionYearModel, null=True, blank=True, on_delete=models.CASCADE)
   created_at = models.DateTimeField(auto_now_add=True)
   updated_at = models.DateTimeField(auto_now_add=True)

   @property
   def examgrades(self):
      return self.examgrades_set.all().order_by('student')

   @property
   def studentcourses(self):
      return self.studentcourses_set.all().order_by('studentcourse')

from the model above the student are related to both StudentCourse and ExamGrade i would like to update the show attribute to True on StudentCourses and in my views i have this code below从上面的 model 中,学生与 StudentCourse 和 ExamGrade 有关,我想在 StudentCourses 上将 show 属性更新为 True,在我看来,我在下面有这段代码

Views.py视图.py

class CreateGradeView(View):
  def get(self, request, *args, **kwargs):
    lecturer= Lecturers.objects.get(admin=request.user)
    course = LecturerCourse.objects.filter(lecturer=lecturer)
    context = {
        'course':course,
        'room_name': "broadcast"
        }
    return render(request, 'superadmin/lecturer/add-grade.html',context)

  def post(self, request, *args, **kwargs):
    lecturer = request.POST.get('lecturer')
    lecturer = Lecturers.objects.get(admin=lecturer)
    student = request.POST.get('student')
    student = StudentCourses.objects.get(id=student)
    course = request.POST.get('lecturercourse')
    course = LecturerCourse.objects.get(id=course)
    ca_1 = request.POST.get('ca_1')
    ca_2 = request.POST.get('ca_2')
    ca_3 = request.POST.get('ca_3')
    exam = request.POST.get('exam')

    if ExamGrade.objects.filter(lecturer=lecturer, student=student, lecturercourse=course, status=True).exists():
        messages.warning(request, "User Exam Score already marked")
        return redirect('emisapp:add-grade')
    
    try:
        examgrades = ExamGrade(lecturer=lecturer, student=student, lecturercourse=course, ca_1=ca_1,ca_2=ca_2,ca_3=ca_3,exam=exam, status=True)
        print(examgrades.student.show) 
        examgrades.student.show = True
        print(examgrades.student.show) 
        examgrades.save()
        messages.success(request, 'Weldone you just saved Exam Score for the day')
        return redirect('emisapp:add-grade')
    except:
        messages.error(request, 'There is an saving to database')
        return redirect('emisapp:add-grade')

ajax.py ajax.py

def load_student_for_attendance_by_courses(request):
  studentcourse = request.GET.get('studentcourse')
  student = StudentCourses.objects.filter(studentcourse=studentcourse, 
  show=False).order_by('student')
  return render(request, 'superadmin/settings/load-student- 
  dropdown.html', {'student':student})

load-student-dropdown.html加载学生下拉.html

<option value="">--Select a Student--</option>
{% for s in student %}
<option value="{{s.id}}">{{ s.student.admin.username }} - {{ s.student.admin.last_name }} {{ s.student.middle_name }} {{ s.student.admin.first_name }}</option>

{% endfor %} {% endfor %}

and this was my error 'RelatedManager' object has no attribute 'show' .这是我的错误'RelatedManager' object has no attribute 'show'

Now you can simply do this:现在你可以简单地这样做:

from django.shortcuts import get_object_or_404

try:
    examgrades = ExamGrade(lecturer=lecturer, student=student, lecturercourse=course,
                        ca_1=ca_1, ca_2=ca_2, ca_3=ca_3, exam=exam, status=True)
    print(examgrades.student.show)
    stu_courses_instance = get_object_or_404(
        StudentCourses, id=examgrades.student.id)
    stu_courses_instance.show = True
    stu_courses_instance.save()
    print(examgrades.student.show)
    examgrades.save()
    messages.success(request, 'Weldone you just saved Exam Score for the day')
    return redirect('emisapp:add-grade')

Note: Generally, Django models are written in PascalCase and don't require s to be the suffix as it is added by default by Django, so it is better to name the models as StudentCourse , 'Student and 'Lecturer not StudentCourses , Students and Lecturers respectively.注意:一般Django模型都是PascalCase写的,不需要s作为后缀,因为Django默认加了,所以最好将模型命名为StudentCourse ,'Student and 'Lecturer ,而不是StudentCoursesStudents and Lecturers分别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 AttributeError: 'super' object has no attribute '__getattr__' 我试图在 kivy 上将文本输入从一个屏幕显示到另一个屏幕 - AttributeError: 'super' object has no attribute '__getattr__' I'm trying to show text input from one screen to another screen on kivy 我正在研究 CNN model。 我想读这条路,但我正面临这个问题。 有任何想法吗? - i'm working on the CNN model. I want to read this path , but I am facing this problem. any ideas? RelatedManager'object 没有属性'说明 - RelatedManager' object has no attribute 'description 无法将图层添加到已保存的Keras模型中。 'Model'对象没有'add'属性 - Cannot add layers to saved Keras Model. 'Model' object has no attribute 'add' 我正在尝试创建一个图像分类器机器学习 model。 在将我的训练数据拟合到管道时,它向我显示了这个错误 - I'm trying to create a image classifier machine learning model. while fitting my training data to pipeline, it's showing me this error 尝试拟合 sklearn model 时出现错误。类型错误:只有大小 1 arrays 可以转换为 Python 标量 - I'm getting an error when trying to fit a sklearn model. TypeError: Only size-1 arrays can be converted to Python scalars 如何从预训练的模型中删除最后一层。 我已经尝试过model.layers.pop()但它不起作用 - How to remove the last layer from a pre-trained model. I have tried model.layers.pop() but it is not working 尝试计算 ML model 的梯度时出错(关键错误 0)。 我认为它与尺寸有关,但找不到问题 - Error (Key Error 0) when trying to calculate gradient for an ML model. I think it has something to with the dimensions but can't find the problem 我收到此错误 AttributeError: &#39;function&#39; object has no attribute &#39;hlauncher&#39; while试图从另一个文件中获取属性 - I got this error AttributeError: 'function' object has no attribute 'hlauncher' while trying to get a attribute from another file &#39;RelatedManager&#39;对象没有属性&#39;save&#39;-Django - 'RelatedManager' object has no attribute 'save' - Django
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM