Nano Hash - криптовалюты, майнинг, программирование

Есть ли способ загрузить файл в базу данных после изменения его на подходящую модель в django?

Я хочу создать страницу администратора, если пользователь загружает файл администратора (например, формат файла csv и т. Д.), Он сохраняется в базе данных после изменения подходящей модели. Например, предположим, что пользователь загружает следующий файл.

year month survived ticket
2002  08      1     cn-101
2001  09      0     cn-102
2002  11      1     cn-103

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

class SampleModel(models.Model):
   year = models.IntegerField()
   month = models.IntegerField()
   survived = models.booleanField()
   ticket = models.CharField()

Есть ли способ сделать это в Джанго???


  • В административном приложении django нет встроенных функций, которые бы работали таким образом. Однако довольно легко написать представление, позволяющее создавать экземпляры модели из CSV-файла. Это вид API. Что вам нужно учитывать, так это то, что произойдет, если вы опубликуете одни и те же данные дважды. Должны ли вы добавить больше строк в базу данных или следует игнорировать дубликаты. Должно быть сообщение об ошибке? 11.11.2017
  • Спасибо за совет ! И если пользователь-администратор публикует одни и те же данные, я хочу, чтобы дубликаты игнорировались. 14.11.2017

Ответы:


1

Вы можете унаследовать метод save_model, как показано ниже.

# admin.py
from django.contrib import admin

class SampleAdmin(admin.ModelAdmin):
  def save_model(self, request, obj, form, change):
    file_path = request.FILES['myfile']
    with open(file_path) as f:
      for line in f:
        year, month, survived, ticket = f.split()
        SampleModel.objects.create(year=year, 
                                   month=month, 
                                   survived=bool(int(survived)), 
                                   ticket=ticket)
    super().save_model(request, obj, form, change)
11.11.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..