Как ссылаться на внешний ключ при создании команды
Я пытаюсь сделать пользовательскую команду, которую я могу вызывать в рамках моего проекта Django, но сталкиваюсь с проблемой ссылки на внешний ключ, на который она ссылается.
Как правильно сослаться на созданный экземпляр, чтобы выполнить команду? Любая помощь будет принята с благодарностью.
models.py
class Client(models.Model):
name = models.CharField(max_length=50)
class Project(models.Model):
schema_name = models.CharField(max_length=50)
client = models.ForeignKey(Client, on_delete=models.CASCADE)
команда
class Command(BaseCommand):
help = (
"commands, --create_public"
)
def add_arguments(self, parser):
parser.add_argument(
'--create_public',
action='store_true',
help='creates public tenant'
)
def handle(self, *args, **options):
if options['create_public']:
# create your public tenant
client = Client(name='client1')
client.save()
tenant = Project(schema_name='public',
client='client1',
)
tenant.save()
error
ValueError: Cannot assign "client": "Project.client" must be a "Client" instance.
Для справки:
В своем классе Project
вы определили ограничение как тип Client
, поэтому интерпретатор ожидает экземпляр этого класса в __init__
, созданный используемым фреймворком. Таким образом, при передаче строки ValueError
(хотя имя экземпляра) возникает ошибка client1
.
Решение: передавать экземпляр client
при создании экземпляра Project
.