Как ссылаться на внешний ключ при создании команды

Я пытаюсь сделать пользовательскую команду, которую я могу вызывать в рамках моего проекта 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.

Вернуться на верх