@delongeroman

Как сделать подстановку в поле при внесении данных через админку, имея связь между несколькими таблицами?

Не уверен, что правильно сформулировал вопрос, только начал изучать django.
Вкратце, у меня есть 3 таблицы(модели):
1. таблица "группы компаний"
2. таблица "компании", которая связана через внешний ключ с таблицей "группы компаний". То есть, в группы компаний входят какие-то компании.
3. таблица "заказы". Я её еще не доделал, пока что 3 поля. "улица", "группы компаний" и "компании".
Пока что заполняю данные только в админке.
Суть вопроса: могу ли я при внесении выбрать какую-то конкретную компанию, а группа компаний, в которой находится компания автоматически подставится сама или же предоставит мне выбор в единственном числе нужной "группы компаний". А также, хотелось бы сделать и наоборот, сначала выбрать группу компаний, а потом у меня был бы выбор списка с тех компаний, которые входят в эту группу компаний?

604232cff12cd151606617.png

604232da98dd0200662059.png

604232e9aef62177944862.png

604232f44dc39580537369.png

Мои модели:
from django.db import models


class group_of_companies(models.Model):
    name_group_companies = models.CharField(max_length=50, verbose_name='Название группы компаний')

    def __str__(self):
        return self.name_group_companies

    class Meta:
        verbose_name = 'Группы компаний'  # единственное число
        verbose_name_plural = 'Группы компаний'  # множественное число
        ordering = ['-name_group_companies']


class companies(models.Model):
    company_name = models.CharField(max_length=50, verbose_name='Название компании')
    group = models.ForeignKey(group_of_companies, verbose_name='Название компании', on_delete=models.PROTECT)

    def __str__(self):
        return self.company_name

    class Meta:
        verbose_name = 'Компания'  # единственное число
        verbose_name_plural = 'Компании'  # множественное число


class orders(models.Model):
    street = models.CharField(max_length=50, verbose_name='Улица')
    order_group = models.ForeignKey(group_of_companies, verbose_name='Группа компаний',
                                    on_delete=models.PROTECT)
    order_company = models.ForeignKey(companies, verbose_name='Компания', on_delete=models.PROTECT)

    def __str__(self):
        return self.street

    class Meta:
        verbose_name = 'Заказ'  # единственное число
        verbose_name_plural = 'Заказы'  # множественное число


То есть, на 4 скрине должен быть выбор только из компаний номер 1 и 2, так как они входят в первую группу компаний.
Буду благодарен за любую помощь!
Спасибо за внимание.
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы