S'il vous plaît voir le code ci-dessous. Fondamentalement, lorsque l'utilisateur crée un objet de cette classe, ils doivent spécifier le value_type
. Si value_type==2
(pourcentage), puis percentage_calculated_on
(qui est un CheckboxSelectMultiple du côté formulaire/modèle doit avoir un ou plusieurs éléments vérifiés.La validation du modèle ne me permet pas de valider comme je suis en train de - il jette fondamentalement un exception qui me dit que l'instance doit avoir une valeur de clé primaire avant qu'une relation many-to-many puisse être utilisée.Mais je dois d'abord valider l'objet avant de l'enregistrer.J'ai essayé cette validation du côté formulaire (modelform) (en utilisant la méthode propre de la forme), mais la même chose se passe là aussi.django manytomany validation
Comment puis-je faire pour réaliser cette validation?
INHERENT_TYPE_CHOICES = ((1, 'Payable'), (2, 'Deductible'))
VALUE_TYPE_CHOICES = ((1, 'Amount'), (2, 'Percentage'))
class Payable(models.Model):
name = models.CharField()
short_name = models.CharField()
inherent_type = models.PositiveSmallIntegerField(choices=INHERENT_TYPE_CHOICES)
value = models.DecimalField(max_digits=12,decimal_places=2)
value_type = models.PositiveSmallIntegerField(choices=VALUE_TYPE_CHOICES)
percentage_calculated_on = models.ManyToManyField('self', symmetrical=False)
def clean(self):
from django.core.exceptions import ValidationError
if self.value_type == 2 and not self.percentage_calculated_on:
raise ValidationError("If this is a percentage, please specify on what payables/deductibles this percentage should be calculated on.")
J'ai répondu que la réponse de Manoj Govindan est «acceptée» car elle résout le problème. Cependant, j'aimerais quand même le faire valider en utilisant la validation du modèle de Django. Donc, si quelqu'un a des idées, faites l'effort de les afficher ici. Merci. – chefsmart
même question: http://stackoverflow.com/questions/7986510/django-manytomany-model-validation – user920391