0

私はまだプログラミングに非常に慣れていないので、間違ったツリーを吠えているのではないかと心配しています。多肢選択式クイズ アプリを作成しようとしています。5000 の異なる単語とその定義があります。私は2つの辞書を作りました。1 つは単語の定義、もう 1 つは 4 つの選択肢があり、そのうちの 1 つが正解です。

私はすでにモデルクラスを書いています。また、django シェルにコピーできる txt ファイルも生成しました。これにより、定義が 4 つの可能な回答にリンクされ、正しい回答に True が割り当てられます。でも単語が多いのでdjangoシェルへの入力を自動化したい。それをしてもいいですか?

最初にバッチファイルを書き込もうとしましたが、シェルが開かれると機能しません。

私もこれを読んでみました:

https://docs.djangoproject.com/en/1.9/howto/custom-management-commands/

動作しないとわかっていた完全な怪物コードを作成してしまいました! 上記のリンクで何が起こっているのかよくわかりません。または、それが私の目的に合っているとしても。

とにかく、これが私が生成したテキストです。これを 1 行ずつ django シェルにコピーできます。それは私が望むことを実行します(または少なくとも私が望むと思うこと-私が知っている限り、これについて間違った方法で行っている可能性があります!)しかし、30000行のテキストをコピーして貼り付けるのではなく、ワンクリックで実行したいのは明らかです.

from quiz.models import Question, Class
    q1=Question(question_text="used to refer to somebody/something that has already been mentioned or is easily understood,")
    q1.save()
    q1.choice_set.create(choice_text='the', rorwrong=True)
    q1.choice_set.create(choice_text='be', rorwrong=False)
    q1.choice_set.create(choice_text='of', rorwrong=False)
    q1.choice_set.create(choice_text='a', rorwrong=False)
    ....
    q1849=Question(question_text="to be frightened of somebody/something or frightened of doing something,")
    q1849.save()
    q1849.choice_set.create(choice_text='detail', rorwrong=False)
    q1849.choice_set.create(choice_text='fear', rorwrong=True)
    q1849.choice_set.create(choice_text='beautiful', rorwrong=False)
    q1849.choice_set.create(choice_text='institution', rorwrong=False)

ここに私のモデルクラスがあります:

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    def __str__(self):
        return(self.question_text)


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    rorwrong = models.BooleanField(default=False)
    def __str__(self):
        return(self.choice_text)
4

1 に答える 1

1

カスタム管理コマンドは、このようなタスクを実行するために必要なものです。私はあなたのデータをCSVファイルに入れ、次のようなものでインポートします:

# myapp/management/commands/import_questions.py
import csv

from django.core.management.base import BaseCommand
from myapp.models import Question

class Command(BaseCommand):

    def add_arguments(self, parser):
        parser.add_argument('csvfile', nargs='+', type=str)

    def handle(self, *args, **options):
        for f in options['csvfile']:
            with open(f) as csvfile:
                reader = csv.reader(csvfile)
                for row in reader:
                    # Say the CSV rows are as follows: 
                    # <Question title>, <Answer1Text>, <Answer1Correct> ... etc 
                    q = Question(question_text=row[0])
                    q.save()
                    q.choice_set.create(choice_text=row[1], rorwrong=bool(row[2]))
                    q.choice_set.create(choice_text=row[3], rorwrong=bool(row[4])) 
                    # Etc for the rest of them

次に、このコマンドを次のように実行します。

./manage.py import_questions --csvfile data.csv
于 2016-08-03T04:37:40.400 に答える