Évenements et images

Deux questions, sans liens entre elles

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonsoir à tous !

J'aurais deux questions à vous poser à propos de Django.

Tout d'abord, j'aimerais proposer à mon utilisateur d'être notifié de quelque chose 90 jours, par exemple, avant une date limite. Comment indiquer au serveur de créer cette notification X jours avant la date limite ? Un middleware qui calculerait ça à chaque appel de page ? Ça me parait sortir l'arme lourde pour pas grand chose, non ?

Enfin, et je ne dois pas être le premier à vouloir le faire, mais comment ajouter un nombre indéfini d'image à un modèle ? J'ai compris qu'il va falloir que je passe par une classe externe, mais comment lier ces images au modèle ?

Merci de vos réponses !

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0

Tu peux créer un tache cron qui s'exécute une ou deux fois par jour et exécute ton script qui vérifie si des personnes doivent être notifiées.

Faire un script qui s'exécute ca serait beaucoup trop lourd pour une notification envoyé tous les trois jours ;) .

+2 -0

Cette réponse a aidé l'auteur du sujet

La tâche cron me parait être appropriée.

Pour en revenir à la liste d'images :

1
2
3
4
5
6
class Modele(models.Model):
    ...

class ImageModele(models.Model):
    modele = models.ForeignKey(Modele, related_name='images')
    image = models.ImageField()

J'utilise une foreign key dans un modèle séparé. Pour faire simple, c'est le modèle "Image" qui est relié au modèle de base et non l'inverse.

ThuleMalta - C#, PHP, Python/Django, Unity3D. mon blog

+1 -0
Auteur du sujet

Pour le cron, j'y avait pensé mais c'est juste impossible étant donné que l'application doit pouvoir s’exécuter sous Mac OS X, Windows et Linux. Il me faut vraiment une solution full django.

Aaah, c'est l'image qui prend la clé étrangère ! Merci de ton aide !

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0
Auteur du sujet

J'essaye de faire fonctionner ma classe pour les images. Mais j'avoue que c'est un peu le bazar.

J'ai cette classe (celle des images) qui a une clé étrangère vers une classe abstraite. De celle-ci hérite une autre classe abstraite et enfin un vrai model. Disons :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
class Foo(models.Model):
    pass
    class Meta:
        abstract = True

class FooImage(models.Model):
    model = models.ForeignKey('Foo', related_name='image')
    image = models.ImageField('Image', upload_to='goo/zoo/', null=True, blank=True)

class Bar(Foo):
    pass
    class Meta:
        abstract = True

class FooBar(Bar):
    pass

Mais là je ne vois absolument pas comment ajouter un objet FooBar (a moins que ce soit géré automatiquement) ou encore comment accéder aux images de l'objet…

Merci de votre aide

Édité par Wizix

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0

Salut,

Cocnernant la tache cron, tu peux utiliser Celery qui est du python. C'est probablement un peu lourd pour gérer une seule tache, mais il existe des alternatives plus légères : regarde sur google avec "python celery like" ou sur fullstackpython qui propose plein de solution en full python.

Mais la tache cron reste une meilleure solution pour ce cas là, à mon avis. ET une tache c'est faisable sur Linux, Windows, et Mac os. Ces systèmes n'empechent pas la création de taches plannifiés ;)

Pour ton problème d'image : le code d'exemple que tu montres est peut etre un peu lourd, il y a probablement moyen de simplifier… En revanche, Django gère les classes de modèle abstraites, donc pour ajouter un objet Foobar :

1
fb = FooBar.objects.create()

Et pour ajouter une image :

1
fb.images.add(FooImage.objects.create())

Django ne créé pas de table pour les classes abstraites (tu auras en revanche une table par classe dérivée), mais tous les attributs des classes mères se retrouvent dans les classes filles.

Voilà en ésperant que ca te permette d'avancer.

Édité par grugru

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte