Как обновлять models choice, если это поле ссылается на обьекты другой модели?

Рейтинг: 0Ответов: 1Опубликовано: 04.04.2023
class ModelOne(models.Model):

    name = models.CharField(max_length=500, unique=True, verbose_name="Название", null=True, blank=True)
    short_name = models.CharField(max_length=500, unique=True, verbose_name="Короткое имя", null=True, blank=True)


class ModelTwo(models.Model):

    SOME_CHOICES = []
    objects_model_one = ModelOne.objects.all()
    for some in objects_model_one:
        choice_list = [str(some.name), str(some.name)]
        choice_tuple = tuple(choice_list)
        SOME_CHOICES.append(choice_tuple)

    field_for_select = models.CharField(
        choices=SOME_CHOICES,
        default='Name',
        max_length=500,
        verbose_name="Наименование",
    )

Прикладываю участок кода, чтобы дать понять, какой функционал требуется. В модели ModelTwo нужно, чтобы в форме добавления обьекта через админку показывались на выбор доступные имена модели ModelOne. В приведенном выше коде если я добавляю через админку объект ModelOne, параметр name этого объекта не показывается в секторе выбора при создании объекта модели ModelTwo, пока я не перезапущу сервер Django. Готов выслушать направления, по которым можно было бы изучить документацию для реализации такого функционала или варианты доработки моего кода

Ответы

▲ 0

Не пробовали использовать внешний ключ?

field_for_select = models.ForeignKey(ModelOne, on_delete=models.DO_NOTHING)