Я пытаюсь создать пользовательский набор данных для приборов Django, чтобы не сваливать все в один файл.
вот мой код, который выдает ошибку:
extract.py
def create_fixture( filename, *app_name):
# buffer
buf = StringIO()
# unpacks args to list of db tables
apps = ','.join(map(str, app_name))
# calls dump data and adds db table to call command
call_command('dumpdata', apps, indent=2, format='json', stdout=buf)
# Write to file
buf.seek(0)
with open(Path.cwd().joinpath('main', 'fixtures', filename), 'w') as f:
f.write(buf.read())
class Command(BaseCommand):
help = 'Dumps database file to fixtures'
def handle(self, *args, **kwargs):
#calls function
create_fixture('country.json','main.Country','main.Cities')
#prints to console if successful
self.stdout.write("Dumped Country data!")
Если я запускаю python manage.py extract
в консоли, я получаю следующее сообщение:
CommandError: No installed app with label 'main.Country,main.Cities'
Но если я напишу такой код, он будет работать нормально, ноне использует функцию:
class Command(BaseCommand):
help = 'Dumps database file to fixtures'
def handle(self, *args, **kwargs):
buf = StringIO()
call_command('dumpdata', 'main.Country', 'main.Cities',indent=2, format='json', stdout=buf)
buf.seek(0)
with open(Path.cwd().joinpath('main', 'fixtures', 'country.json'), 'w') as f:
f.write(buf.read())
self.stdout.write("Dumped Country data")
Не уверен, как правильно распаковать аргументы и поместить их в функцию call_command