Я в тупике, и мне нужна помощь. У меня есть две таблицы информации о студентах и студентах. Информация о студенте - это вся информация опекуна этого студента. Я отделил эти данные от основной таблицы учеников, чтобы вы могли добавить столько опекунов, сколько захотите, в файл учеников с новыми записями. Я получаю следующую ошибку.
Невозможно присвоить «1»: «StudentInformation.studentpsid» должен быть экземпляром «Student».
В приложении вы увидите мой код. Studentpsid в информации о студенте - это внешний ключ от студента.
def ImportStudentGuardian(request):
AuthTokenP(request)
print("Getting student guardian data from SIS for K-8")
#Pulls K-8 Guardians
url = "removed for posting"
payload = {}
token = APIInformation.objects.get(api_name="PowerSchool")
key = token.key
headers = {'Authorization': 'Bearer {}'.format(key)}
response = requests.request("GET", url, headers=headers, data = payload)
encode_xml = response.text.encode('utf8')
xml_string = ET.fromstring(encode_xml)
students = xml_string.findall("student")
for student in students:
#XML Values
psid = student.find("id").text
try:
mother = student.find("contact").find("mother").text
except Exception:
mother = ""
try:
father = student.find("contact").find("father").text
except Exception:
father = ""
if Student.objects.filter(studentpsid=psid).exists():
print("Accessing guardian information.")
m = StudentInformation.objects.create(studentpsid=psid,guardian_name = mother, relation = "Mom") <---- Function Fails here
print("Record doesn't exist for mom, creating record.")
m.save()
d= StudentInformation.objects.create(studentpsid=psid,guardian_name = father, relation = "Dad")
print("Record doesn't exist for dad, creating record.")
d.save()
return ("Updated Guardian Information ")
Model
class Student(models.Model):
studentpsid= models.CharField(primary_key = True , default = "", max_length = 50, unique = True)
student_name = models.CharField(max_length = 50)
first_name = models.CharField(max_length = 50, default = "")
last_name = models.CharField(max_length = 50,default = "")
gender = models.CharField(max_length = 1,default = "")
student_grade = models.CharField(max_length = 2, default = "")
home_room = models.CharField(max_length = 5, default = "")
student_enrollment = models.CharField(max_length = 2, default = "")
school_number = models.CharField(max_length = 15, default = "")
email = models.EmailField(default = "")
projected_graduation_year = models.CharField(max_length = 4, default = "")
counseling_goal = models.TextField(max_length = 255)
class_name = models.ManyToManyField(TeacherClass)
image = models.ImageField(default ="default.png", upload_to ='student_pics')
# Guardian Information For Student
class StudentInformation(models.Model):
studentpsid = models.ForeignKey(Student,on_delete = models.CASCADE, default = "" ,)
guardian_name = models.CharField(max_length = 50, default = "")
RELATION_CHOICES = [
(0, 'None'),
(1, 'Mom'),
(2, 'Dad'),
(3, 'Other'),
]
relation = models.PositiveSmallIntegerField(choices = RELATION_CHOICES,)
guardian_cell = models.CharField(max_length = 12, default = "")
guardian_email = models.EmailField(max_length = 80,blank = True, default = "")
prefered_contact = models.BooleanField(default = False, blank = True)
DAY_CHOICES = [
(0, 'None'),
(1, 'Monday'),
(2, 'Tuesday'),
(3, 'Wednesday'),
(4, 'Thursday'),
(5, 'Friday'),
]
day_of_week = models.PositiveSmallIntegerField(choices = DAY_CHOICES, default = 0 )
time = models.CharField(max_length= 7, default = "", blank = True)