Суть такова. Есть одна модель в django, key id модели используется как подкаталог для хранения файлов, т.е. id=1 дает /media/1/pic.jpg например. Но беда в том, что key id не создается до тех пор, пока я не сделаю model.save(). Значит сколько не долбись, но ПО НОРМАЛЬНОМУ ты не узнаешь key id. А когда сделал save как бы уже поздно. Рюзке посоны не сдаются и сделал все через жопу.
Code
def post_image_path(instance, filename): id = instance.post_id if id == None: try: id = max(map(lambda a: a.post_id, Post.objects.all())) + 1 except ValueError as error: id = 1 return os.path.join('threads/', str(id), filename)
Костыли костылики, хакеры кулхацкеры. Ненавижу себя за это: Post.objects.all())) + 1 и это try: id = max(map(lambda a: a.post_id, Post.objects.all())) + 1 except ValueError as error: id = 1 bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
def post_image_path(instance, filename): id = instance.post_id if id == None: id = Post.objects.all().aggregate(Max('post_id')) if id['post_id__max'] == None: id['post_id__max'] = 1 else: id['post_id__max'] = id['post_id__max'] + 1 return os.path.join('threads/', str(id['post_id__max']), filename)
КМП. Хотя бы теперь всю базу не ворочает. Рефакторинг во все поля. bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
Сообщение отредактировал eXceed - Понедельник, 09.04.2012, 16:21
Да я уже понял. Как раз прочел в доках. Хреново так жить. bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
Доступно только для пользователей bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.