Создайте новую модель на основе двух других существующих моделей

#django

#django

Вопрос:

Я настраиваю проект django, у меня есть 2 существующих модели предложений и кандидатов, что я хочу сделать, так это создать новую модель (модель оценки) на основе двух моделей Предложений и кандидатов, поэтому я создал функцию add_line() в моей модели предложения, которая должна создать объект оценки, ноэто не сработает, даже когда я использовал сигнал post_save, есть какие-либо предложения?

Модель кандидатов:

 class Candidates(models.Model):
    nom = models.CharField(max_length = 50)
    prenom = models.CharField(max_length= 50)
    email = models.EmailField()
    phone = models.CharField(max_length=100)
    niveau_d_experience = models.IntegerField() 
    etablissement_universitaire= models.CharField(max_length=150)
    niveau_options = (('Licence', 'Licence'), ('Master', 'Master'), ("Diplôme d'ingénieur", "Diplôme d'ingénieur"), ('Doctorat', 'Doctorat'))
    niveau_educatif =  models.CharField(choices=niveau_options, max_length=100)
    profil = models.CharField(max_length=100)
    sexe_options = (('Mâle', 'Mâle'), ('Femelle', 'Femelle'))
    sexe = models.CharField(choices=sexe_options, max_length=100)
    offre = models.CharField(max_length= 200)
    CV = models.FileField()
    date_creation = models.DateTimeField(auto_now_add=True, auto_now=False)  
    text_resume = models.TextField(editable=False)
    language = models.CharField(max_length = 20, editable=False)
  

Предлагает модель:

 class Offers(models.Model):
    titre = models.CharField(max_length=120)
    description = models.TextField()
    technologies = models.TextField()
    softskills = models.TextField()
    expérience = models.IntegerField()
    contrat_options= (('CDI', 'CDI'), ('CDD', 'CDD'), ('Freelance', 'Freelance'), ('Stage', 'Stage'))
    contrat =  models.CharField(choices=contrat_options, max_length=100)
    mission_options = (('Interne', 'Interne'), ('Externe', 'Externe'))
    mission= models.CharField(choices=mission_options, max_length=100)
    validation_options = (('Offre validée', 'Offre validée'), ('Offre pourvue', 'Offre pourvue'))
    validation = models.CharField(choices =validation_options, max_length=100)

    def add_line(self, **kwargs):
        queryset = Candidates.objects.all()
        for candidate in queryset:
            scoring, created = Scoring.objects.get_or_create(
                offer_id = self,
                cand_id = candidate
                )
        return scoring


    def __str__(self):
        return self.titre
  

и модель оценки:

 class Scoring(models.Model):
    offer_id = models.ForeignKey(Offers, on_delete = models.DO_NOTHING, editable = False)
    cand_id = models.ForeignKey(Candidates, on_delete = models.DO_NOTHING, editable= False)
  

Комментарии:

1. Что именно вы пытаетесь сделать? В нынешнем виде ваш add_line() метод gets_or_creates Scoring экземпляр каждый раз, когда он вызывается, даже через post_save сигнал.

2. я хотел бы сохранять новый объект оценки каждый раз, когда сохраняется новый объект предложения

3. Рассмотрите возможность добавления Scoring в качестве сквозной таблицы для отношения «многие ко многим «, определенного в Offer «или Candidate » .