Django仅允许非关系和外键

2024-06-16 08:27:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在这里创建一个脚本,查看我的员工表列表,分析员工的电子邮件地址,并将其与系统中的登录名进行比较,以将其分配给他们的教室,但我的脚本不断崩溃

目标是什么? 我们的目标是我有一个叫做分区的表格,分区就是教室。每个教室都有一位老师。但是,为了让老师看到分配给他们的教室,我会通过用户的登录名(即他们的电子邮件地址)将其链接起来。然而,尽管打印语句中的逻辑对查询有效,但无法更新多对多字段。这是我的密码

FUNCTION

def AssignLoginToSection():
  users = User.objects.all()
  for user_email in users:
    email = user_email.email 
    print('Getting Email addresses in system.')
    if Section.objects.filter(staffpsid__email = email):
      section = Section.objects.filter(staffpsid__email = email)
      print("Found Matching Login Name.")
      print('The following sections were found with this users email.', section)
      Section.objects.filter(staffpsid__email = email).update(teacher_username= email)
      print('Added user login name to section.')
    else:
     print("No matching login name.")
  return("Done")   

MODELS

# Section Information Stored
class Section(models.Model):
    sectionpsid= models.CharField(primary_key = True, default = "", max_length = 50)
    schoolpsid = models.ForeignKey(School,on_delete = models.CASCADE, default = "" ,)
    coursepsid = models.ForeignKey(Course,on_delete = models.CASCADE, default = "" ,) 
    termpsid = models.ForeignKey(Term,on_delete = models.CASCADE, default = "" ,) 
    section_number = models.CharField(default = "", max_length = 50)
    expression = models.CharField(default = "", max_length = 50)
    external_expression= models.CharField(default = "", max_length = 50)
    staffpsid = models.ForeignKey(Staff,on_delete = models.PROTECT, default = "" ,) 
    gradebooktype = models.CharField(default = "", max_length = 50)
    teacher_username = models.ManyToManyField(User)
 
# Staff Information Stored
class Staff(models.Model):
    staffpsid= models.CharField(primary_key = True, default = "", max_length = 50)
    first_name = models.CharField(max_length = 50, default = "")
    last_name = models.CharField(max_length = 50, default = "")
    staff_name = models.CharField(max_length = 50, default = "")
    email = models.EmailField(default = "", unique = True)
    staff_cell = models.CharField(max_length = 12, default = "")
    users_dcid = models.CharField(max_length = 5, default = "")   

    

我得到的错误是无法更新模型字段<;django.db.models.fields.related.ManyToManyField:teacher\u username>;(仅允许使用非关系键和外键)


Tags: namedefaultobjectsmodelsemailsectionlengthusers
1条回答
网友
1楼 · 发布于 2024-06-16 08:27:52

ManyToManyField使用添加或删除方法

而不是:

Section.objects.filter(staffpsid__email = email).update(teacher_username= email)

使用:

section.teacher_username.add(user_email.id)

相关问题 更多 >