J'utilise l'héritage de modèle pour gérer un plusieurs modèles queryset:héritage du modèle et RSS cadre
from django.db import models
from django.contrib.sites.models import Site
from django.contrib.auth.models import User
from imagekit.models import ImageModel
import datetime
class Entry(models.Model):
date_pub = models.DateTimeField(default=datetime.datetime.now)
author = models.ForeignKey(User)
via = models.URLField(blank=True)
comments_allowed = models.BooleanField(default=True)
class IKOptions:
spec_module = 'journal.icon_specs'
cache_dir = 'icon/resized'
image_field = 'icon'
class Post(Entry):
title = models.CharField(max_length=200)
description = models.TextField()
slug = models.SlugField(unique=True)
def __unicode__(self):
return self.title
class Photo(Entry):
alt = models.CharField(max_length=200)
description = models.TextField(blank=True)
original = models.ImageField(upload_to='photo/')
def __unicode__(self):
return self.alt
class Quote(Entry):
blockquote = models.TextField()
cite = models.TextField(blank=True)
def __unicode__(self):
return self.blockquote
Un modèle conditionnel est suffisant pour rendre les extraits de droite html avec une vue basée sur Entry.objects .Toutes():
{% extends "base.html" %}
{% block main %}
<hr>
{% for entry in entries %}
{% if entry.post %}
[...do something with entry.post]
{% endif %}
{% if entry.photo %}
[...do something with entry.photo]
{% endif %}
[...and so on]
maintenant, je suis en train de générer un flux RSS en utilisant le nouveau cadre d'alimentation en vedette dans Django 1.2, mais sans succès ... les paramètres succint du cadre ne font pas permettez-moi de spécifier conditionnel item_title et item_description sur la base des objets enfants d'entrée:
from django.contrib.syndication.views import Feed
from totanus.journal.models import Entry, Photo, Post, Quote
class LatestEntriesFeed(Feed):
title = "RSS Feed"
link = "/journal/"
description = "Journal RSS"
def items(self):
return Entry.objects.order_by('-date_pub')[:10]
def item_title(self, item):
# if child is Post
return item.post.title # this isn't working, of course...
Dois-je créer une vue personnalisée-modèle défini pour gérer la création de flux RSS et syndication ou est-il un moyen d'utiliser le cadre d'alimentation avec ce modèle sous-classé?
Merci Gabriel. Option 1) a bien fonctionné. En fait j'ai vu les docs mais j'ai mal compris le point. A propos de l'option 2) - pour être honnête - je ne pense pas que je comprends complètement ce que vous vouliez dire. Cependant ... Merci beaucoup! – Matteo