2009-07-11 12 views
2

Je voudrais afficher tous les flux disponibles sur une page, mais je ne veux pas coder en dur chaque flux. Quelque chose comme envoyer dans un queryset des aliments serait parfait, comme:django syndication: comment envoyer un ensemble de requêtes contenant tous les flux à un modèle

{% pour l'alimentation dans les aliments%} {{feed.link}} {{ feed.name}} {{ feed.description}} D'après ce que je comprends, les flux dans le framework de syndication Django sont créés comme des classes individuelles qui héritent de la classe (flux). Cela signifie que je ne peux pas créer un jeu de requête pour tous les flux, uniquement pour les flux individuels.

Comment puis-je envoyer un jeu de requêtes, s'il s'agit d'une classe différente? Est-ce seulement possible en créant un jeu de requête à partir d'une classe qui fait référence à chaque flux en utilisant des relations de clés étrangères génériques? Ou puis-je envoyer un jeu de requête de la classe parent [feed]? Question bonus: existe-t-il un moyen simple d'agréger un "full-feed" à partir de tous les flux individuels?

Merci beaucoup!

+0

Comment créez-vous l'ensemble de requêtes en premier lieu? pourriez-vous montrer le code? – Evgeny

+0

Je pense que l'approche de la liste est la voie à suivre, mais cela ne répond pas à la question de former automatiquement une liste de toutes les classes qui héritent de la classe [feed]. Pour l'instant, j'utiliserai la liste de flux définie manuellement dans mon urls.py. –

Répondre

1

Si vous pouvez énumérer les flux à l'avance, vous pouvez créer une liste d'aliments et de le mettre dans le modèle ...

feeds = [feed_a,feed_b,...] 
feeds.append(feed_c) 
... 

J'ai essayé une approche ci-dessous et il n'a pas fonctionné, qui En effet, "related_name" peut créer une fonction accesseur et n'affecte pas les tables DB.

#this code does not work in Django v1 
class FeedCollection(models.Model): 
    subject = models.CharField(max_length=256) 

class BloggerFeed(models.Model): 
    collection = models.ForeignKey(FeedCollection,related_name='feed') 

class CNNFeed(models.Model): 
    collection = models.ForeignKey(FeedCollection,related_name='feed') 

Django se plaint que les fonctions accesseurs FeedCollection.feed_set pour les deux tables d'alimentation entrent en conflit.