9

データベースに新しい情報を入力するために使用するdjango-adminカスタムコマンドがあります。繰り返しますが、すべてが機能します。

ただし、モデルと関数を少し変更して、2つの引数をタプルとして受け入れるようにしました。「名前」だけでなく、名前と名前です。

以下の前のコード-動作しています。「manage.pyxyzname1name2 name3 ...」などを使用して実行します(異なる引数間のスペース)

from django.core.management.base import BaseCommand, CommandError
from detail.models import ABC
from detail.parser import DEF

class Command(BaseCommand):
    args = '<name...>'
    help = 'Populates the ABC class database'

    def handle(self, *args, **options):
        for symbol in args:

            try:
                info = DEF(name)

django-adminカスタムコマンドから2つの引数を渡すことは可能ですか?2番目の引数はオプションです->すなわち(first、last = None)?

以下を使用して実行したい擬似コード..."manage.pyxyz(first1、last1)(first2、last2)<-またはこれのバリエーション

これをスタンドアロン関数として適切に受け入れるように、関数DEFをすでに変更しました。django-adminコマンドをどのように機能させることができるかわかりません。

4

1 に答える 1

13

それは完全に可能ですが、django.core.managementそうするための特定のツールを提供していません。argsキーワードargumentを介して渡された引数を解析できます。そのための構文を考え出す必要があります(helpコマンドの属性で構文を定義することをお勧めします)。

構文が、であると仮定するfirstname.lastnameか、またはfirstname名前が省略されている場合は、次のように実行できます。

def handle(self, *args, **options):
    for arg in args:
        try:
            first_name, last_name = arg.split('.')
        except ValueError:
            first_name, last_name = arg, None

        info = DEF(first_name, last_name)

また、コマンドのユーザーは次のような引数を渡すことができます。

$ python manage.py yourcommand -v=3 john.doe bill patrick.bateman
于 2012-05-13T02:49:15.767 に答える