2017-09-22 2 views
1

Disons que j'ai une instance de modèle A1 et que les modèles existants B1 et B2 ont A1 comme champ de clé étrangère fk. Existe-t-il un moyen pour l'instance de modèle A1 de savoir qu'une autre instance de modèle nouvellement créée B3 l'a assignée comme champ fk (sans avoir à définir une sorte de compteur chaque fois qu'un modèle B utilise A1 comme fk et suivi les changements de compteur) ? En fin de compte, je voudrais un comportement similaire à la façon dont les utilisateurs sont informés de la nouvelle réponse ou du commentaire (par exemple l'instance du modèle B) lorsque d'autres utilisateurs postent à leurs questions (par exemple instance du modèle A).Détecter si le modèle a été ajouté en tant que clé étrangère à un autre modèle

Un conseil pour le faire efficacement serait apprécié. Merci :)

Répondre

0

Essayez d'utiliser un signal post django sauver

Lorsqu'une entrée est sauf dans les modèles alors le signal post sauvegarde est d'exécuter vous pouvez trouver l'objet a fk ou non signal post sauver.

Reportez-vous au code suivant.

from django.db.models.signals import post_save 
from django.dispatch import receiver 

class YourModel(models.Model): 
    # ... fields here 

# method for fk is assigned or not 
@receiver(post_save, sender=YourModel) 
def signal_name(sender, instance, **kwargs): 
    if instance.fk: 
     # Do your stuff 

Pour plus de détails, voir django signal

Peut être que cela vous aide à trouver les fk est affecté ou non.