Виды создания и обновления Django: поле внешнего ключа - PullRequest
0 голосов
/ 29 мая 2018

Предположим, у меня есть два следующих класса:

class Parcel(models.Model):
    name = models.CharField(max_length=NAME_MAX_LENGTH)
    garden = models.ForeignKey(Garden, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

class Bed(models.Model):
    parcel = models.ForeignKey(Parcel, on_delete=models.CASCADE)
    name = models.CharField(max_length=NAME_MAX_LENGTH)
    length = models.IntegerField()
    width = models.IntegerField()

Я использую общие представления Django для создания и обновления новых кроватей.Поскольку parcel является внешним ключом, Django автоматически создает выборочный ввод со всеми существующими участками в базе данных.Тем не менее, я хотел бы сказать Django, что нужно ставить только посылки с определенным garden_id.Я посмотрел на функцию get_initial(self), но я не хочу указывать начальное значение для посылки, просто сузьте выбор посылок.

Если у кого-то есть идея, это мне очень поможет.

Спасибо.

1 Ответ

0 голосов
/ 29 мая 2018

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to

Пример:

staff_member = models.ForeignKey(
    User,
    on_delete=models.CASCADE,
    limit_choices_to={'is_staff': True},
)

В вашем случае может быть использовано:

limit_choices_to={'garden_id__in': ['list', 'of', 'valid', 'ids']}

Источник: Как ограничить выбор внешних ключейк связанным объектам только в django

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...