2016-09-11 1 views
0

J'ai un modèle CoursePage dans le site Wagtail.Wagtail: Comment puis-je copier une instance de page dans Wagtail avec toutes ses propriétés et méthodes

class CoursePage(Page): 
    ..... 
    institute = models.ForeignKey(Institute) 
    ..... 

J'ai un champ modèles django ForeignKey dans ce nom institut

Je veux faire une copie de son instance par programme afin que l'instance nouvellement créée institut champ peut être modifié.

J'ai essayé approche django de copie instance de modèle, qui est:

course = CoursePage.objects.all()[0] 
course.pk = None 
course.save() 

Mais il doesnot élaborer. Il fonctionne uniquement avec le modèle hérité avec django models.Model. mais pas avec le modèle hérité avec page

Répondre

1

Le modèle Page implémente une méthode copy pour ce faire:

def copy(self, recursive=False, to=None, update_attrs=None, 
     copy_revisions=True, keep_live=True, user=None): 

Les paramètres qu'il accepte sont:

  • recursive - si elle est vraie, copies pages enfant ainsi
  • to - la page pour créer la nouvelle copie sous (par défaut de créer frères et soeurs de la page existante)
  • update_attrs - un dict des champs à mettre à jour pendant la copie, comme {'institute': other_institute}
  • copy_revisions - que ce soit pour copier l'historique des révisions
  • keep_live - que ce soit de copier le statut « en direct »
  • user - le propriétaire de la nouvelle page, à des fins de permission