Bjr
C'est incroyable que le debug de Thomas ne marche pas,et que aucune
exception (OSError, IOError) ne soit levée par Django.J'ai presque
envie de dire que c'est impossible:) .Peux tu tapez sur la console
les testes suivants, juste comment MEDIA_ROOT et met MEDIA_ROOT= ''
1. Comment MEDIA_ROOT
#MEDIA_ROOT = '%s/public/media' % PROJECT_PATH
MEDIA_ROOT =''
2 .Insert nouveau object dans la base
class Photo(models.Model):
libelle = models.CharField(max_length=255)
image = models.ImageField(upload_to='photos/')
galerie = models.ForeignKey(Galerie)
.manage.py shell
>>> from yourapp.models import Photo
>>> from django.core.files import File
>>> f = File(open("/abspath/image.jpg"))
>>> ph= Photo(name ='name_for_test')
>>> ph.image.save(f.name, f)
>>> ph.galerie = Galerie.objects.all()[0]
>>> ph.save()
3.Récupéré l'object dans la base
>>ph2 =Photo.objects.get(name__iexact='name_for_test')
>>print ph2.image.path # cette valeur m 'intersse
>>print ph2.image.name #
>>ph2.image.delete() # dis moi si l'image est suprimé
--Ad
Le 22 décembre 2011 01:08, Séno Hervé Edorh <[email protected]> a écrit :
> Salut Thomas,
> J'ai essayé mais j'ai rien dans le /tmp/debug qui apparait. C'est quand
> même bizarre... la fonction delete doit normalement marcher...
>
>
> Alioune voici mon settings.py
>
> http://pastebin.fobyfus.com/code/2/
>
>
>
> Le 21 décembre 2011 18:38, Alioune Dia <[email protected]> a écrit :
>
>
>> 1.J'ai installe django 1.3
>>
>> Salut
>>
>>
>> J'ai installé la 1.3 de DJANGO
>>
>> >>> import django
>> >>> django.get_version()
>> '1.3'
>>
>>
>> 2.J'ai créé une petite application
>> python manage.py startapp filestorage
>>
>>
>> 3. Edition du models de filestorage
>>
>> from django.db import models
>>
>> # Create your models here.
>> class MyModel(models.Model):
>> file = models.ImageField(upload_to= 'image')
>> name = models.SlugField()
>> def __str__(self):
>> return '%s :%s'\
>> %(self.__class__.__name__, self.name)
>>
>>
>>
>> 4. Je fais ./manage.py syncdb
>>
>>
>> filestorage.mymodel: "file": To use ImageFields, you need to install the
>> Python
>> Imaging Library. Get it at http://www.pythonware.com/products/pil/ .
>>
>>
>> 6. J'installe pil pour fixer le problème,et je teste
>> >>> from PIL import ImageFile
>> >>>
>>
>>
>> 7. J’exécute a nouveau syncdb, et je vérifie que tout est Ok
>> Creating tables ...
>> Creating table filestorage_mymodel
>> Installing custom SQL ...
>> Installing indexes ...
>> No fixtures found.
>>
>>
>> 8.
>> Creating tables ...
>> Creating table filestorage_mymodel
>> Installing custom SQL ...
>> Installing indexes ...
>> No fixtures found.
>>
>>
>>
>> 9. Je lance le shell
>>
>> python manage.py shell
>>
>> Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit
>> (Intel)] on
>> Type "help", "copyright", "credits" or "license" for more information.
>> (InteractiveConsole)
>> >>>
>>
>> 10. Je teste la création et suppression de ImageField , et dans mon
>> dossier
>> projet en cours, j'ai un dossier crée du nom 'image',et dedans il y' a
>> 4d37c7.jpg.
>>
>> >>> from filestorage.models import MyModel
>> >>> from django.core.files import File
>> >>> f = File(open("/abspath/4d37c7.jpg"))
>> >>> m.file.save(f.name, f)
>> >>> m.save()
>>
>>
>> 11. Je verifie que la sauvegarde marche bien avec l'instance et le
>> fichier.Et j'ai
>> un model et une image dans le dossier image.
>>
>> >>> m3 = MyModel.objects.all()
>> >>> print m3
>> [<MyModel: MyModel :>, <MyModel: MyModel :>]
>>
>>
>> 12 .Je le supprime
>> m3[0].file.delete()
>>
>>
>>
>> m3[0] est belle et bien supprimé, ainsi que l'image 4d37c7.jpg
>> se trouvant dans le dossier -image- sur ma machine, il faut juste que tu
>> mette MEDIA_ROOT= '' si le dossier image est a la racine.sinon tu met
>> le bon répertoire .Lorsque le MEDIA_ROOT est mal initialisé l'image ne
>> devait même pas être crée.
>> J'avoue que je n'arrive pas a simuler
>> ton soucis .Tout ce que je sais c'est que -filestorage- marche bien
>> et que -instance.image.delete()- marche aussi.Donc Django marche bien.
>>
>> --Ad
>>
>>
>> Le 21 décembre 2011 14:04, Alioune Dia <[email protected]> a écrit :
>>
>> Hi Thomas
>>> Ok , je comprends c'est le -filestorage- que tu veux debugger bonne
>>> idée.
>>> Vu le code que tu as a print , j'ai comme l'impression que -Django fail
>>> silently-
>>> lorsque le chemin passé n'est pas bon . Je suis curieux de savoir ce
>>> que
>>> Hervé a mis dans le -MEDIA_ROOT- du settings.py. filestorage est
>>> totalement
>>> dependant de -MEDIA_ROOT (qui est un chemin absolu).
>>> --Ad
>>>
>>>
>>>
>>> Le 21 décembre 2011 12:10, Thomas NOEL <[email protected]> a écrit :
>>>
>>>>
>>>>
>>>> Le 21 décembre 2011 12:06, Alioune Dia <[email protected]> a
>>>> écrit :
>>>>
>>>> Bonjour,
>>>>> Applique ce que Thomas t'a dis de faire et tu verras dans ton fichier
>>>>> de log quelque chose qui cloche (/tmp/debug). Cependant je te
>>>>> conseillerai
>>>>> de le faire dans la méthode -delete- de ton model plutot que dans le
>>>>> core de django
>>>>> (django/core/files/storage.py) .Cette partie est reversé aux -Cerveaux
>>>>> Privilégiés-
>>>>> .Moi je ne le ferai pas :). Si tu en est un comme Thomas, alors GO :)
>>>>>
>>>>
>>>> En fait mon idée est de vérifier que le delete du filestorage est bien
>>>> appelé
>>>> par le delete de imagefield (qui est un filefield, qui utilise un
>>>> filestorage)...
>>>> D'où ma proposition de patcher temporairement des print dans le delete
>>>> du
>>>> filestorage... mais c'est juste une idée, comme ça, en passant...
>>>>
>>>> --
>>>> Thomas
>>>>
>>>>
>>>>
>>>> --
>>>> Ce message a été envoyé à la liste [email protected]
>>>> Gestion de votre abonnement : http://dakarlug.org/liste
>>>> Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug
>>>> Le site du DakarLUG : http://dakarlug.org
>>>>
>>>
>>>
>>
>>
>> --
>> Ce message a été envoyé à la liste [email protected]
>> Gestion de votre abonnement : http://dakarlug.org/liste
>> Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug
>> Le site du DakarLUG : http://dakarlug.org
>>
>
>
>
> --
> EDORH Hervé Séno
> Developper
> http://www.edorh.com/
> Ouest Africa
>
>
>
> --
> Ce message a été envoyé à la liste [email protected]
> Gestion de votre abonnement : http://dakarlug.org/liste
> Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug
> Le site du DakarLUG : http://dakarlug.org
>
--
Ce message a été envoyé à la liste [email protected]
Gestion de votre abonnement : http://dakarlug.org/liste
Archives : http://news.gmane.org/gmane.org.user-groups.linux.dakarlug
Le site du DakarLUG : http://dakarlug.org