Как заполнить таблицу при создании модели Django?

#python #django #django-models

#python #django #django-модели

Вопрос:

У меня есть список городов (простой файл cvs), и я хочу заполнить таблицу citeis при создании модели города. Описание класса:

 class City(models.Model):
    city = modeld.CharField('city_name', max_length=50)

    class Meta:
        berbuse_name =....
        ...........

    def __unicode__(self):
        return self.city
  

Теперь я ищу, как сделать это только один раз, при создании модели (таблицы DB).

Я пытаюсь сделать это здесь, потому что для меня это звучит очень логично (например, создание sql-скрипта в MS-sql и других)

РЕДАКТИРОВАТЬ: Хорошо, я думаю, я спрашиваю не о том …. может быть, это: Как мне создать функцию python, которая возьмет файл cvs и преобразует его в json (опять же, в самой модели, во время ее сборки) и должен ли я вообще это делать???

Может ли кто-нибудь, пожалуйста, помочь мне с этим?

Комментарии:

1. преобразование csv в JSON тривиально. Посмотрите на csv модуль и json module.

Ответ №1:

Обычно мы делаем что-то подобное.

 import csv
from my_django_app.forms import CityForm
with open( "my file", "rb" ) as source:
    rdr = csv.DictReader( source )
    for row in rdr:
        form= CityForm( **row )
        if form.is_valid(): 
            form.save()
        else:
            print form.errors
  

Это проверяет и загружает данные.

После загрузки данных вы можете использовать django-admin dumpdata для сохранения JSON-элемента из загруженной модели.

Комментарии:

1. Спасибо, это то, что мне было нужно, хотя, насколько я понимаю, этого нет в самой модели …. но 10x 🙂

Ответ №2:

Комментарии:

1. Извините, но я прочитал это и не вижу, как это мне поможет…. Может быть, я ошибаюсь, но, как я уже сказал, у меня есть файл cvs, и я хочу, чтобы он был автоматически загружен (леди-программист), чтобы не вводить значения вручную (это я могу сделать в admin… Может быть, я чего-то не понимаю, но я больше думал о чтении файла с помощью python и создании автоматической вставки…. Я отредактирую свой первоначальный вопрос ….10x