Estoy tratando de crear un formulario usando modelsform, funcionaba bien pero, de repente, no sé qué sucede de repente y comenzó a darme este error django.core.exceptions.FieldError: Unknown field(s) (PhoneNumber, City, Email, KYCDocument, Image, Speciality) specified for Doctor He comprobado este error en línea y he probado algunas soluciones, pero nada me ha resultado útil.
aquí está el archivo Forms.py
from django import forms from .models import Doctor class Doctorslist(forms.ModelForm): class Meta: model = Doctor fields = ('name','PhoneNumber','Email','City','Speciality','Image','KYCDocument')aquí está el archivo models.py
from django.db import models from phonenumber_field.modelfields import PhoneNumberField # Create your models here. class Doctor(models.Model): name = models.CharField(max_length=20) phone_number = PhoneNumberField(null=False, blank=False, unique=True) email = models.EmailField(max_length = 100) city = models.CharField(max_length=100) speciality = models.CharField(max_length=50) doc_image = models.ImageField(upload_to = 'blog_images', verbose_name = "Image") kycdocument = models.ImageField(upload_to = 'blog_images', verbose_name = "kycImage")Los campos deben tomar el nombre de los campos en su modelo, entonces:
class Doctorslist(forms.ModelForm): class Meta: model = Doctor fields = ('name', 'phone_number', 'email', 'city', 'speciality', 'doc_image', 'kycocument') Por lo tanto, no debe usar el verbose_name de un campo ni poner los campos en mayúsculas. Estos son simplemente los nombres de los campos que define en el formulario.
Si desea mostrar estos campos de una manera diferente en el lado HTML, puede definir un verbose_name=… [Django-doc] para ese campo, o establecer una label en el formulario. Por ejemplo:
class Doctor(models.Model): name = models.CharField( verbose_name="Doctor's name" , max_length=20) # … o en el formulario con la opción de labels [Django-doc] :
class Doctorslist(forms.ModelForm): class Meta: model = Doctor fields = ('name', 'phone_number', 'email', 'city', 'speciality', 'doc_image', 'kycocument') labels = { 'name': "doctor's name" }