2010-08-07 6 views
0

J'ai joué avec Django pendant quelques jours et je suis tombé sur le problème suivant. Je les modèles suivants:Validation simple Django avec plusieurs paramètres problème

Employee = (id, employeeName) 
Project = (id, projectName) 
Assignment = (fk_employee, fk_project, from_date, to_date) 

Ce que je veux faire est de créer un validateur qui ne permettra pas à des périodes d'affectation à se chevaucher. L'algorithme est très simple, mais je ne sais pas comment le configurer correctement en utilisant des validateurs.

Ce que je pensais est d'avoir quelque chose comme:

class Assignment(models.Model): 
    ... 
    from_date = models.DateField(
     validators=[DateInRangeValidator(%theFromDateValue%, %aReferenceToTheEmployee%)]) 
    to_date = models.DateField(
     validators=[DateInRangeValidator(%theToDateValue%, %aReferenceToTheEmployee%)]) 

def DateInRangeValidator(dateValue, employee): 
    ... 

BTW, je l'ai écrit ces% theDateValue% et% aReferenceToTheEmployee% parce que je ne sais pas comment envoyer ces paramètres. Serait-ce «soi-même», «from_date» ou autre chose?

Alors, je suis proche de la solution? Merci d'avance! :)

Répondre

0

Vous devez avoir accès à plus d'un champ du modèle, c'est une validation de modèle plutôt qu'une validation de champ.

Vous pouvez donc envisager de remplacer la méthode clean de la classe Assignment. Cette pièce de Django document peut vous être utile.

+0

Merci d'avoir répondu :) Selon la documentation, cela semble être la solution. Je vais jouer avec pendant un moment et je posterai plus tard. –