Джанго:"Cannot create form field"
В моём джанго проекте есть два приложения, модель из одного из них подключено ко второму и является полем для ModelForm
Первая модель:
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey
from django.db import models
from django.contrib.auth.models import User
from .fields import OrderField
from django.template.loader import render_to_string
from django.utils.safestring import mark_safe
class Subject(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True)
class Meta:
ordering = ['title']
def __str__(self):
return self.title
Вторая модель
from django.db import models
from django.contrib.auth.models import User
import sys
sys.path.append('../')
from courses.models import Subject
class Teacher(models.Model):
name = models.CharField(max_length=20)
surname = models.CharField(max_length=20)
subject = models.ForeignKey('Subject', on_delete=models.CASCADE,
related_name='teacher_subject')
person = models.ForeignKey(User,
related_name='teacher', on_delete=models.CASCADE)
def __str__(self):
initials = self.name + ' ' + self.surname
return initials
Форма:
from django import forms
from courses.models import Course
from django.forms import ModelForm
from .models import Teacher
class CourseEnrollForm(forms.Form):
course = forms.ModelChoiceField(queryset=Course.objects.all(),
widget=forms.HiddenInput)
class TeacherRegistrationForm(forms.ModelForm):
password = forms.CharField(label='Password',
widget=forms.PasswordInput)
password2 = forms.CharField(label='Repeat password',
widget=forms.PasswordInput)
class Meta:
model = Teacher
fields = ['name', 'surname', 'subject']
Объясните, пожалуйста, в чём заключается моя ошибка, что её вызывает, а не только то, как её исправить
Код ошибки: "ValueError: Cannot create form field for 'subject' yet, because its related model 'Subject' has not been loaded yet"
Ответы (1 шт):
Автор решения: Andrew Holovko
→ Ссылка
- Переименуйте,
SubjectвSubject2- такой класс уже в моделях есть. - Замените в
Teacher:
...
subject = models.ForeignKey('Subject2', on_delete=models.CASCADE, related_name='teacher_subject')
...
На
from app2.models import Subject2
...
subject = models.ForeignKey(Subject2, on_delete=models.CASCADE, related_name='teacher_subject')
...
По просту в вашей app не мог найти откуда брать Subject2.