2016-08-15 5 views
0

Voici à quoi ressemblent mes modèles. Je n'ai pas pu effectuer la validation en remplaçant la méthode de sauvegarde de l'un des modèles.Django-Taggit valide les tags nouvellement ajoutés avant d'enregistrer

class NotificationListTag(TaggedItemBase): 
    content_object = models.ForeignKey('Mailer') 


class Mailer(models.Model): 

    from_email = models.CharField(max_length=255) 
    to_emails = TaggableManager(
     through=NotificationListTag, 
     blank=True, 
     verbose_name='To Emails', 
     help_text='Space separated email ID' 
    ) 

Comment puis-je valider chaque nouvelle balise avant de l'enregistrer. Ai-je oublié quelque chose?

+0

Je pense que vous avez fait quelques erreurs en "anonymisant" ce code: 1) le ParentalKey se réfère à UnchainedMailer, pas Mailer; 2) si vous utilisez ParentalKey, vous devez également utiliser ClusterableModel et ClusterTaggableManager sur Mailer; sinon, le ParentalKey devrait juste être un ForeignKey. (Je suggérerais d'essayer de faire fonctionner ceci d'abord avec un simple ForeignKey - de cette façon, il y a moins de parties mobiles). – gasman

+0

@gasman Par ForeignKey voulez-vous implémenter comme ceci http://django-taggit.readthedocs.io/en/latest/custom_tagging.html#custom-tag en utilisant un tag personnalisé? –

+0

@gasman J'ai donc essayé de passer à ForeignKey, mais je n'arrive toujours pas à intercepter la bonne méthode de sauvegarde. La balise que je veux vérifier est toujours créée. Existe-t-il un moyen pour que je puisse l'intercepter au niveau du formulaire? –

Répondre

0

J'ai fini par créer une API personnalisée pour les suggestions d'autocomplétion de marquage, qui ne suggère que des noms valides.

Vous pouvez remplacer le tagit.js par défaut, pour passer votre URL de saisie semi-automatique personnalisée. De cette façon, vous n'avez pas à valider après que l'utilisateur a entré une valeur.