Как я могу определить, что, по моему мнению, что-то не так с внешним ключом? - PullRequest
0 голосов
/ 27 апреля 2020

Это моя модель:

class addteacher(models.Model):
    Teacher_Name=models.CharField(max_length=50)
    Teacher_Subjects=models.ForeignKey("subjects",related_name="+", on_delete=models.CASCADE)   //here foreign key use
    Teacher_Subjects_Code=models.CharField(max_length=50)
    Teacher_Username=models.CharField(max_length=50)
    Teacher_Password=models.CharField(max_length=50)

class subjects(models.Model):
    Subject_Name=models.CharField(max_length=50)

Форма, связанная с моделью:

class addstudent_form(forms.ModelForm):
    Student_Registration_no=forms.CharField(widget=forms.TextInput())
    Student_Name=forms.CharField(widget=forms.TextInput())
    Student_roll_no=forms.CharField(widget=forms.TextInput())
    Student_mobile_no=forms.CharField(widget=forms.TextInput())


    class Meta():
        model = addstudent
        fields = ['Student_Registration_no','Student_Name','Student_roll_no','Student_mobile_no']


class addsubject_form(forms.ModelForm):
    Subject_Name=forms.CharField(widget=forms.TextInput(),required=True)

    class Meta():
        model=subjects
        fields = ['Subject_Name']

Ниже приведен вид:

def addteacher1(request):
    if request.method == 'POST':
        Teacher_Name = request.POST['Teacher_Name']
        Teacher_Subjects = request.POST['Teacher_Subjects']
        Teacher_Subjects_Code = request.POST['Teacher_Subjects_Code']
        Teacher_Username = request.POST['Teacher_Username']
        Teacher_Password = request.POST['Teacher_Password']
        Teacher_Password2 = request.POST['Teacher_Password2']


    if Teacher_Password == Teacher_Password2 :


            if login_teacher.objects.filter(user_name_teacher = Teacher_Username).exists():
                messages.info(request, 'username exists')
                return render(request, 'createteacher.html')
            else:
                add_teacher = addteacher.objects.create(Teacher_Name=Teacher_Name, Teacher_Subjects=Teacher_Subjects, Teacher_Subjects_Code=Teacher_Subjects_Code, Teacher_Username=Teacher_Username, Teacher_Password=Teacher_Password)


                add_teacher.save()

                return render(request, 'createteacher.html')
    else:
         return render(request, 'principlehome.html')

Ниже приведена ошибка, которую я являюсь получать, когда я даю информацию, используя HTML:

ValueError at /principle/addteacher
Cannot assign "'c'": "addteacher.Teacher_Subjects" must be a "subjects" instance.
Request Method: POST
Request URL:    http://127.0.0.1:8000/principle/addteacher
Django Version: 3.0.2
Exception Type: ValueError
Exception Value:    
Cannot assign "'c'": "addteacher.Teacher_Subjects" must be a "subjects" instance.

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

  1. В таблице базы данных хранится "c"

  2. I Я думаю, что если я введу "C" в качестве входных данных для "teacher_subject", он сохранит идентификатор субъекта, который был порван в таблице предметов

...