error Unknown field(s) () specified for Membro

Hi team,

can anyone help me to check why I am getting this issue, I a reviewed my Model’s classes and not found any error.

django.core.exceptions.FieldError: Unknown field(s) () specified for Membro (venv) PS C:\atendimentoPlatec-master>

below my models in python


from django.db import models
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError


class Setor(models.Model):
    id = models.CharField(primary_key=True, max_length=255)
    nome = models.CharField(max_length=100)

    class Meta:
        db_table = 'c_setor'
        verbose_name = 'Setor'
        verbose_name_plural = 'Setors'

    def __str__(self):
        return f"{self.nome}"


class Cargo(models.Model):
    id = models.CharField(primary_key=True, max_length=255)
    nome = models.CharField(max_length=255)
    classe = models.CharField(max_length=255)

    class Meta:
        db_table = 'c_cargo'
        verbose_name = 'Cargo'
        verbose_name_plural = 'Cargos'

    def __str__(self):
        return f"{self.nome}"


class Supervisor(models.Model):
    nome = models.CharField(max_length=150)
    email = models.CharField(max_length=254)

    class Meta:
        db_table = 'supervisor'
        verbose_name = 'supervisor'
        verbose_name_plural = 'supervisores'

    def __str__(self):
        return self.nome


class Membro(models.Model):
    id = models.CharField(primary_key=True, max_length=255)
    nome = models.CharField(max_length=255)
    setor = models.ForeignKey(Setor, on_delete=models.CASCADE, related_name='c_membro', null=True)
    cargo = models.ForeignKey(Cargo, on_delete=models.CASCADE, related_name='c_membro', null=True)
    email = models.CharField(max_length=255)  # Adicione o campo de email
    supervisor = models.CharField(max_length=255)
    area = models.CharField(max_length=255)

    class Meta:
        db_table = 'c_membro'
        verbose_name = 'Membro'
        verbose_name_plural = 'Membros'

    def __str__(self):
        return f"{self.id} - {self.nome} - {self.email}"


class Tecnologia(models.Model):
    id = models.CharField(primary_key=True, max_length=255)
    nome = models.CharField(max_length=255)

    class Meta:
        db_table = 'c_tecnologia'
        verbose_name = 'Tecnologia'
        verbose_name_plural = 'Tecnologias'

    def __str__(self):
        return f"{self.nome}"


class Formacao(models.Model):
    id = models.CharField(primary_key=True, max_length=255)
    nome = models.CharField(max_length=255)
    descricao = models.CharField(max_length=255)
    tecnologia = models.ForeignKey(Tecnologia, on_delete=models.CASCADE, related_name='c_formacoes', null=True)
    duracao = models.CharField(max_length=255)

    class Meta:
        db_table = 'c_formacoes'
        verbose_name = 'Formacao'
        verbose_name_plural = 'Formacoes'

    def __str__(self):
        return f"{self.nome}"


class Competencia(models.Model):
    id = models.AutoField(primary_key=True)
    nome = models.CharField(max_length=255)
    setor = models.ForeignKey(Setor, on_delete=models.CASCADE, related_name='c_competencias', null=True)
    tecnologia = models.ForeignKey(Tecnologia, on_delete=models.CASCADE, related_name='c_competencias', null=True)

    class Meta:
        db_table = 'c_competencias'
        verbose_name = 'Competencia'
        verbose_name_plural = 'Competencias'

    def __str__(self):
        return f"{self.nome}"


class ConsultaCompetencia(models.Model):
    id = models.AutoField(primary_key=True)
    membro = models.ForeignKey(Membro, on_delete=models.CASCADE, related_name='c_membro_competencias')
    competencia = models.ForeignKey(Competencia, on_delete=models.CASCADE, related_name='c_membro_competencias')
    nivel = models.CharField(max_length=255, default='0')
    setor = models.ForeignKey(Setor, on_delete=models.CASCADE, related_name='c_membro_competencias', null=True)

    class Meta:
        db_table = 'c_membro_competencias'
        verbose_name = 'Consulta Competencia'
        verbose_name_plural = 'Consulta Competencias'
        unique_together = ('membro', 'competencia')


class ConsultaFormacao(models.Model):
    id = models.AutoField(primary_key=True)
    membro = models.ForeignKey(Membro, on_delete=models.CASCADE, related_name='c_membro_formacoes')
    formacao = models.ForeignKey(Formacao, on_delete=models.CASCADE, related_name='c_membro_formacoes')
    Data = models.DateField(max_length=255)

    class Meta:
        db_table = 'c_membro_formacoes'
        verbose_name = 'Consulta Formacao'
        verbose_name_plural = 'Consulta Formacoes'

    def __str__(self):
        return f"{self.membro.nome} ({self.membro.id}) - {self.formacao.nome} - {self.Data}"


class FormacaoPrevista(models.Model):
    id = models.AutoField(primary_key=True)
    formacao = models.ForeignKey(Formacao, on_delete=models.CASCADE, related_name='c_formacos_previstas')
    formador = models.CharField(max_length=255)
    vagas = models.CharField(max_length=255)
    duracao = models.CharField(max_length=255)
    local = models.CharField(max_length=255)
    datainicial = models.DateField()
    datafinal = models.DateField()
    vagasdisponiveis = models.CharField(max_length=255)
    Elearning = models.CharField(max_length=255)
    status = models.CharField(max_length=255)

    class Meta:
        db_table = 'c_formacoes_previstas'
        verbose_name = 'Formacao Prevista'
        verbose_name_plural = 'Formacao Previstas'

    def __str__(self):
        return f"{self.formacao.nome} - {self.formador} - {self.vagas} - {self.duracao}"


class Matriz(models.Model):
    id = models.AutoField(primary_key=True)
    competencias = models.ForeignKey(Competencia, on_delete=models.CASCADE)
    area = models.CharField(max_length=255)
    nivel_percentual = models.DecimalField(max_digits=5, decimal_places=2)
    setor = models.ForeignKey(Setor, on_delete=models.CASCADE)

    class Meta:
        db_table = 'c_areas_competencias'

    def __str__(self):
        return f"Matriz #{self.id}: {self.area} - {self.competencias} - {self.setor}"


class MembroFormacao(models.Model):
    id = models.AutoField(primary_key=True)
    membro = models.ForeignKey(Membro, on_delete=models.CASCADE, related_name='c_formacaoid_membroid')
    formacao_prevista = models.ForeignKey(FormacaoPrevista, on_delete=models.CASCADE,
                                          related_name='c_formacaoid_membroid')

    class Meta:
        db_table = 'c_formacaoid_membroid'
        verbose_name = 'Membro Formacao'
        verbose_name_plural = 'Membro Formacoes'

    def __str__(self):
        return f"{self.membro.nome} ({self.membro.id}) - {self.formacao_prevista.formacao.nome}"


class FormacaoCompetencia(models.Model):
    id = models.AutoField(primary_key=True)
    competencias = models.ForeignKey(Competencia, on_delete=models.CASCADE, related_name='c_formacoes_competencias')
    formacoes = models.ForeignKey(Formacao, on_delete=models.CASCADE, related_name='c_formacoes_competencias')


class Meta:
    db_table = 'c_formacoes_competencias'
    verbose_name = 'Formacao Competencia'
    verbose_name_plural = 'Formacao Competencias'


def __str__(self):
    return f"{self.competencias.nome} ({self.formacoes.nome})"



It would help to see the full traceback of the error, which should indicate where in your code – the file and line number – the error is happening.

hi @philgyford

bellow thi full error log.
I tried to figure the error out but I couldnt
any help will be really appreciated

(venv) PS C:\atendimentoPlatec-master> python manage.py migrate
Traceback (most recent call last):
  File "C:\atendimentoPlatec-master\manage.py", line 22, in <module>
    main()
  File "C:\atendimentoPlatec-master\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\management\__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\management\base.py", line 402, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\management\base.py", line 448, in execute
    output = self.handle(*args, **options)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\management\base.py", line 96, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\management\commands\migrate.py", line 97, in handle
    self.check(databases=[database])
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\management\base.py", line 475, in check
    all_issues = checks.run_checks(
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\checks\registry.py", line 88, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\checks\urls.py", line 14, in check_url_config
    return check_resolver(resolver)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\checks\urls.py", line 24, in check_resolver
    return check_method()
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\urls\resolvers.py", line 476, in check
    for pattern in self.url_patterns:
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\utils\functional.py", line 57, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\urls\resolvers.py", line 690, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\utils\functional.py", line 57, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\urls\resolvers.py", line 683, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Program Files (x86)\MiniPython\V_3.9.8\soft\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\atendimentoPlatec-master\platecplatform\urls.py", line 19, in <module>
    path('gestao_competencia_servidor/', include('gestao_competencia_servidor.urls')),
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\urls\conf.py", line 38, in include
    urlconf_module = import_module(urlconf_module)
  File "C:\Program Files (x86)\MiniPython\V_3.9.8\soft\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\atendimentoPlatec-master\gestao_competencia_servidor\urls.py", line 4, in <module>
    from . import views
  File "C:\atendimentoPlatec-master\gestao_competencia_servidor\views.py", line 5, in <module>
    from .forms import MembroForm, FormacaoPrevistaForm, AdicionarMembroForm
  File "C:\atendimentoPlatec-master\gestao_competencia_servidor\forms.py", line 7, in <module>
    class MembroForm(forms.ModelForm):
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\forms\models.py", line 327, in __new__
    raise FieldError(message)
django.core.exceptions.FieldError: Unknown field(s) () specified for Membro (venv) PS C:\atendimentoPlatec-master> 


If you work up from the bottom, look for the first file that’s from your project. It’s this one:

  File "C:\atendimentoPlatec-master\gestao_competencia_servidor\forms.py", line 7, in <module>
    class MembroForm(forms.ModelForm):

So what does the MembroForm class look like?

hI @philgyford

Thanks a log, the MembroForm has empty values on fields

class MembroForm(forms.ModelForm):
    class Meta:
        model = Membro
        fields = ['id', 'nome', 'setor', ''
                                         '']  # Lista dos campos que você deseja editar
        widgets = {
            'setor': forms.Select(attrs={'class': 'form-control'}),
            'cargo': forms.Select(attrs={'class': 'form-control'}),
        }

I already fixed, but am still getting the error…

this is for forms.py and just after it, the error log.

any idea?

from django import forms
from .models import Setor, Membro
from django.core.exceptions import ValidationError



class MembroForm(forms.ModelForm):
    class Meta:
        model = Membro
        fields = ['id', 'nome', 'setor', 'cargo']  # Lista dos campos que você deseja editar
        widgets = {
            'setor': forms.Select(attrs={'class': 'form-control'}),
            'cargo': forms.Select(attrs={'class': 'form-control'}),
        }

class SetorForm(forms.Form):
    setor = forms.ModelChoiceField(queryset=Setor.objects.all(), empty_label=None)

from .models import FormacaoPrevista

from django import forms

STATUS_CHOICES = [
    ('prevista', 'Prevista'),
    ('confirmada', 'Confirmada'),
    ('cancelada', 'Cancelada'),
    ('concluida', 'Concluída'),
]

class FormacaoPrevistaForm(forms.ModelForm):
    status = forms.ChoiceField(choices=STATUS_CHOICES)

    class Meta:
        model = FormacaoPrevista
        fields = ['formacao', 'formador', 'vagas', 'duracao', 'local', 'datainicial', 'datafinal', 'vagasdisponiveis', 'Elearning', 'status']


from .models import Membro, MembroFormacao

class AdicionarMembroForm(forms.ModelForm):
    setor_filtro = forms.ModelChoiceField(
        queryset=Setor.objects.all(),
        label="Filtrar por Setor",
        required=False  # Isso permite que o campo seja opcional
    )

    class Meta:
        model = MembroFormacao
        fields = ['membro']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['membro'].queryset = Membro.objects.all()

    class Meta:
        model = Membro
        fields = ['nome', 'email']  # Inclua os campos que você deseja coletar ao adicionar membros


from django import forms
from .models import Competencia

class CompetenciaForm(forms.ModelForm):
    class Meta:
        model = Competencia
        fields = ['nome', 'setor', 'tecnologia']



error log

(venv) PS C:\atendimentoPlatec-master> python manage.py runserver                                                                                                                                                                  
Watching for file changes with StatReloader                                                                                      
Performing system checks...

Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Program Files (x86)\MiniPython\V_3.9.8\soft\lib\threading.py", line 973, in _bootstrap_inner
    self.run()
  File "C:\Program Files (x86)\MiniPython\V_3.9.8\soft\lib\threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\management\commands\runserver.py", line 134, in inner_run
    self.check(display_num_errors=True)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\management\base.py", line 475, in check
    all_issues = checks.run_checks(
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\checks\registry.py", line 88, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\checks\urls.py", line 14, in check_url_config
    return check_resolver(resolver)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\core\checks\urls.py", line 24, in check_resolver
    return check_method()
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\urls\resolvers.py", line 476, in check
    for pattern in self.url_patterns:
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\utils\functional.py", line 57, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\urls\resolvers.py", line 690, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\utils\functional.py", line 57, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\urls\resolvers.py", line 683, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Program Files (x86)\MiniPython\V_3.9.8\soft\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\atendimentoPlatec-master\platecplatform\urls.py", line 19, in <module>
    path('gestao_competencia_servidor/', include('gestao_competencia_servidor.urls')),
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\urls\conf.py", line 38, in include
    urlconf_module = import_module(urlconf_module)
  File "C:\Program Files (x86)\MiniPython\V_3.9.8\soft\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\atendimentoPlatec-master\gestao_competencia_servidor\urls.py", line 4, in <module>
    from . import views
  File "C:\atendimentoPlatec-master\gestao_competencia_servidor\views.py", line 5, in <module>
    from .forms import MembroForm, FormacaoPrevistaForm, AdicionarMembroForm
  File "C:\atendimentoPlatec-master\gestao_competencia_servidor\forms.py", line 7, in <module>
    class MembroForm(forms.ModelForm):
  File "C:\atendimentoPlatec-master\venv\lib\site-packages\django\forms\models.py", line 327, in __new__
    raise FieldError(message)
django.core.exceptions.FieldError: Unknown field(s) () specified for Membro










Strange! Are you sure you’ve saved the forms file after removing the empty strings?

I think the definition of fields field is wrong (no commas, empty strings).
I would suggest to ensure that MembroForm has the same fields with your Membro model.

Something like this:

class MembroForm(forms.ModelForm):
    class Meta:
        model = Membro
        fields = ['id', 'nome', 'setor', 'cargo', 'email', 'supervisor', 'area']  # Ensure all fields are listed
        widgets = {
            'setor': forms.Select(attrs={'class': 'form-control'}),
            'cargo': forms.Select(attrs={'class': 'form-control'}),
        }