Как я загружаю соленые данные на django FileField?

Предполагая, что id не имеет пробелов, вы можете реализовать это, используя:

select id, (next_id - id + 1) as cnt
from (select t.*,
             (select min(t2.id)
              from t t2
              where t2.id > t.id and
                    t2.value > t.value + 13.5
             ) as next_id
      from t
     ) t
order by cnt asc
fetch first 1 row only;

Для меня не очевидно, как вы можете использовать оконные функции для этого.

5
задан btel 11 May 2009 в 14:50
поделиться

5 ответов

ПРИМЕЧАНИЕ: См. Другие ответы и комментарии ниже - старая информация и неработающие ссылки удалены (нельзя удалить однажды принятый ответ).

У Марти Алчина есть раздел об этом в главе 3 Pro Django, просмотрите здесь .

-2
ответ дан 14 December 2019 в 04:47
поделиться

На основании ответов на вопросы я пришел к следующему решению:

from django.core.files.base import ContentFile
import pickle

content = pickle.dumps(somedata)
fid = ContentFile(content)
data_entry.file.save(filename, fid)
fid.close()

Все это делается на стороне сервера, и пользователям НЕ разрешается загружать соленья. Я протестировал его, и он работает нормально, но я открыт для любых предложений.

9
ответ дан 14 December 2019 в 04:47
поделиться

В вашей базе данных атрибут файл - это просто путь к файлу. Итак, поскольку вы не выполняете фактическую загрузку, вам необходимо сохранить файл на диске, а затем сохранить путь в базе данных.

f = open(filename, 'w')
pickle.dump(somedata, f)
f.close()
data_entry.file=filename
data_entry.save()
1
ответ дан 14 December 2019 в 04:47
поделиться

Я никогда не делал это, но, прочитав немного соответствующего кода, я бы начал с создания экземпляра django.core.files.base.ContentFile и присвоения ему значения поля.

0
ответ дан 14 December 2019 в 04:47
поделиться

Не лучше ли хранить данные в текстовом поле? В конце концов, это не загрузка файлов.

0
ответ дан 14 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: