2017-10-06 4 views
0

J'ai deux modèles suivants. Ce que je veux, c'est que chaque fois que je remplis les données dans le modèle Book i.e son nom (comme le nom du livre dit Java) Il sera automatiquement enregistré aussi dans le modèle de Contributor sous le champ "name". Aussi je peux être manuellement en mesure de remplir le champ « nom » dans le modèle de contributeur à django AdministrateurObtenir des données du modèle A au modèle B après avoir rempli le formulaire de modèle B en django

class Book(models.Model): 
    name = models.CharField(max_length=30) 
    def __str__(self): 
     return self.name 

class Contributor(models.Model): 
    name = models.CharField(max_length=30) 
    def __str__(self): 
     return self.name 

Data in model Book After Filling Data in model Book I want Data in model Contributor as this

+0

Vous pouvez remplacer la méthode de sauvegarde du modèle Book ou mieux écrire un signal post_save pour le modèle Book. –

+0

Cela dépend essentiellement de la forme de votre formulaire et de ce que vous voulez obtenir en écrivant les données dans un autre modèle. Voulez-vous créer un 'Contributor' lors de la création d'un' Book' ou voulez-vous seulement le créer si le 'Contributor' n'existait pas auparavant? Question supplémentaire, pourquoi avez-vous besoin de créer une instance d'un modèle qui n'est pas lié à une ForeignKey? –

+0

Je souhaite créer un Contributor lors de la création d'un livre. Aussi, je veux ajouter des données avec le modèle Contributor –

Répondre

0

Si je comprends bien votre question clairement, vous voulez lier un livre à sa Contributeur. Utilisez simplement la méthode ForeignKey. Ainsi, l'objet Book contiendra toutes les informations sur le Contributor (et pas seulement son nom).

class Book(models.Model): 
    contributor = models.ForeignKey(Contributor, on_delete=models.CASCADE) 
    name = models.CharField(max_length=30) 
    def __str__(self): 
     return self.contributor.name 

class Contributor(models.Model): 
    name = models.CharField(max_length=30) 
    def __str__(self): 
     return self.name 

Tout à propos ForeignKey dans Django est here.