Как установить команду для заполнения django данных через текстовый файл DJANGO - PullRequest
0 голосов
/ 04 апреля 2020

спасибо за ваше время:

Я получил модель, которая должна быть заполнена 3 текстовыми документами, каждый из которых содержит 40 строк. команда должна открывать каждую строку, устанавливать объекты, сохранять ее и вызывать снова в диапазоне 40:

Я могу вызвать ее 40 раз, хотя 40 из них танцуют одинаково Последняя строка Как я могу установить счетчик в текстовом файле на go до следующей строки при повторном вызове? я должен установить разделение, чтобы получить строки в виде списка? и установите строку как индекс списка list[counter]?

models.py:

class MP4 (models.Model):
    nome = models.CharField(blank=True, max_length=100)
    url = models.URLField(blank=True, max_length=300)
    imagem = models.ImageField(blank=True, upload_to='')
    artista = models.CharField(blank=True, max_length=100, default='Unknown')

seeder.py (команда):

class Command(BaseCommand):
    file_name = ['nome.txt', 'artista.txt', 'url.txt']


    @classmethod
    def handle(cls, *args, **kwargs):
        counter = 0
        for row in range(40):
            counter += 1 
            with open(cls.file_name[0]) as file:
                for linha in file:
                    nome = linha

            with open(cls.file_name[1]) as file:
                for linha in file:
                    artista = linha

            with open(cls.file_name[2]) as file:
                for linha in file:
                    url = linha

            row = MP4(
                nome=nome,
                url=url,
                artista=artista,
                id=MP4.objects.latest('id').id + 1
                )

            row.save()

nome.txt :

Somewhere over the Rainbow
ocean drive
Michael Jackson - Billie Jean ( cover by J.Fla )
...

url.txt:

https://www.youtube.com/watch?v=V1bFr2SWP1I&list=RDV1bFr2SWP1I&start_radio=1
https://www.youtube.com/watch?v=KDxJlW6cxRk&list=RDVHoT4N43jK8&index=19
https://www.youtube.com/watch?v=J1AdPY73qxo
...

artista.txt

gordinho havaiano
duke dumont
Michael Jackson
...

1 Ответ

1 голос
/ 04 апреля 2020

Полагаю, вы могли бы открыть все 3 файла вместе, и l oop это с помощью почтового индекса.

file_name = ['nome.txt', 'artista.txt', 'url.txt']
with open(file_name[0]) as file1, open(file_name[1]) as file2, open(file_name[2]) as file3:
    for data in zip(file1, file2, file3):
        nome, artista, url = data
         row = MP4(
            nome=nome,
            url=url,
            artista=artista,
            id=MP4.objects.latest('id').id + 1
            )
        row.save()
...