2017-07-25 1 views
0

Comment arriver dans les modèles de classe django Une autre valeur de l'image ou BlogPageGalleryImage clé étrangère ou clé parentale?Django comment obtenir dans le modèle de la valeur d'un autre modèle

class BlogPage(Page): 
    date = models.DateField("Дата публикации" , default=datetime.date.today ) 
    body = RichTextField(blank=True) 
    name = models.CharField(max_length=80, default='Лучший') 



class BlogPageGalleryImage(Orderable): 
    page = ParentalKey(BlogPage, related_name='gallery_images') 
    image = models.ForeignKey('wagtailimages.Image', on_delete=models.CASCADE, related_name='+') 
    caption = models.CharField(blank=True, max_length=250) 
    panels = [ 
     ImageChooserPanel('image'), 
     FieldPanel('caption'), 
    ] 

class Another(BlogPage): 
    page = ParentalKey(BlogPage, related_name='instagram_post') 
    Image = BlogPageGalleryImage.objects.get(BlogPageGalleryImage.) 
    caption = models.CharField(blank=True, max_length=250) 
    panels = [ 
     ImageChooserPanel('image'), 
     FieldPanel('caption'), 
    ] 
+0

Pourriez-vous être plus précis au sujet de votre question? – zaidfazil

+0

Si vous voulez enregistrer 'Image' à partir de' BlogPageGalleryImage' dans le modèle 'Another', vous pouvez écraser la méthode' save() 'pour obtenir ceci. – Bijoy

+0

Voulez-vous définir une valeur par défaut pour le champ Another.Image? Il serait utile que vous donniez un exemple de la façon dont vous voulez l'utiliser. – swalladge

Répondre

1

Il semble que vous cherchez à accéder aux images de la page de blog dans votre modèle BlogPage et Another. Cela peut être réalisé en ajoutant les images de la page de blog au contexte de rendu. Pour ce faire, le remplacement get_context dans BlogPage méthode:

def get_context(self, request, *args, **kwargs): 
    context = super(BlogPage, self).get_context(
     request, *args, **kwargs 
    ) 
    context['images'] = BlogPageGalleryImage.objects.filter(
     page=self, 
    ) 
    return context 

Cela signifie que vous pouvez maintenant dans votre accès modèle les images à l'aide {{ images }}. Ainsi, par exemple:

{% for i in images %} 
    <div class="image"> 
     {% image i.image %} 
     <p>{{ i.caption }}</p> 
    </div> 
{% endfor %} 
+0

merci, mais pas dans le modèle, j'ai pensé à le faire dans les modèles> mais il semble qu'il n'y ait aucun moyen de philisophie. Comment faire cela dans l'interface d'administration? En bergeronnette j'inscris habituellement des vues, mais il semble ici que ce n'est pas assez – Mihail

+0

Par mauvais, je dois avoir mal compris votre question. Avez-vous essayé d'ajouter un 'InlinePanel ('gallery_images')' à la définition 'panels' de' BlogPage' et 'Another'? – Dekker

+0

oui j'ai essayé, mais je ne vois pas mes informations dans les fieds de DB après avoir ouvert la page. Je veux ouvrir la page et voir là les valeurs d'autres modèles étrangers. Je pense que je vais mal. – Mihail