Philippe Haumesser
Philippe Haumesser

Reputation: 647

models refer to another class in same models.py

in my models, I have:

class Department(models.Model):
    name = models.CharField(_("Name"),max_length=70, null=False, blank=False)
    history = models.TextField(_("History"),max_length=1000, null=True, blank=True, default='No History')
    manager = models.ForeignKey(Employee,on_delete=models.SET_NULL, null=True, related_name='manager')

class Employee(models.Model):
    GENDER = (('Mr', 'Monsieur'), ('Mme', 'Madame'), ('other', 'OTHER'))
    CHOIX_ASSURANCES_COLLECTIVE = (('Individuelle', 'Individuelle'), ('Familiale', 'Familiale'), ('Exemption', 'Exemption'))

    emp_id = models.CharField(_("Nethris Number"),max_length=5, default='000')
    gender = models.CharField(_("Gender"),choices=GENDER, max_length=10)
    first_name = models.CharField(_("First Name"),max_length=50, null=False)
    last_name = models.CharField(_("Last Name"),max_length=50, null=False)
    date_naissance = models.DateField(_("Born Date"), blank=True, null=True)
    date_embauche = models.DateField(_("Hire Date"),blank=True, null=True)
    NAS= models.CharField(_("NAS"),max_length=9, null=False,blank=True, )
    AssuCollective = models.CharField(_("Collective insurance"),choices=CHOIX_ASSURANCES_COLLECTIVE, max_length=12,blank=True, null=True)
    Date_couverture = models.DateField(_("Insurance begin date"),blank=True, null=True)
    mobile = models.CharField(_("Mobile"),max_length=15, blank=True, null=True)
    email = models.EmailField(_("Email"),max_length=125, null=False, blank=True)
    address = models.TextField(_("Address"),max_length=100, default='', blank=True)
    emergency = models.CharField(_("Emergency person"),max_length=50, blank=True, null=True)
    emploi = models.ForeignKey(Job,on_delete=models.SET_NULL, null=True, blank=True, related_name='Role')
    department = models.ForeignKey(Department, on_delete=models.SET_NULL, null=True, blank=True, related_name='Departt')

But my class Department don't see class Employee

So I've this error:

manager = models.ForeignKey(Employee,on_delete=models.SET_NULL, null=True, related_name='manager')
NameError: name 'Employee' is not defined

How can I solve this

Upvotes: 0

Views: 20

Answers (1)

markwalker_
markwalker_

Reputation: 12849

Define the models as strings in the ForeignKey fields, as you can see here in the ForeignKey docs

from django.db import models

class Car(models.Model):
    manufacturer = models.ForeignKey(
        'Manufacturer',
        on_delete=models.CASCADE,
    )
    # ...

class Manufacturer(models.Model):
    # ...
    pass

Upvotes: 1

Related Questions