Создание поля внешнего ключа модели Django из определенного набора запросов?

#django #django-models

#django #django-models

Вопрос:

Хорошо, это сложно объяснить.

У меня есть эти модели:

 class Supplier(models.Model):
    name = models.CharField(max_length=200, null=True)
    phone = models.CharField(max_length=200, null=True, blank=True)
    email = models.CharField(max_length=200, null=True, blank=True)
    date_created = models.DateTimeField(auto_now_add=True, null=True)

class Product(models.Model):
    description = models.CharField(max_length=30)
    costprice = models.FloatField(null=True, max_length=99, blank=True)
    retailprice = models.FloatField(null=True, max_length=99, blank=True)
    barcode = models.CharField(null=True, max_length=99, unique=True, blank=True)
    image = DefaultStaticImageField(null=True, blank=True,default='images/item_gC0XXrx.png')
    supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE, null=True, blank=True)

class Order(models.Model):
    item = models.ForeignKey(Product, on_delete=models.CASCADE, default='')
    supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
    item_qty = models.IntegerField(null=True, blank=True)
    date_created = models.DateTimeField(auto_now_add=True, null=True)
 

Моя конечная цель — иметь возможность создавать «Заказ», извлекая товары от определенного поставщика.

Теперь я понятия не имею, как это сделать — как мне создать экземпляр «Заказа» в какой-то форме, который будет получать товары от выбранного поставщика, а не все товары от всех остальных?

Ответ №1:

Вы ищете limit_choices_to

Комментарии:

1. И если этого недостаточно, вам необходимо переопределить get_queryset метод вашего поля формы. Например, посмотрите на это: docs.djangoproject.com/en/3.1/ref/contrib/admin /…

2. Спасибо, однако я не вижу, как я могу применить это к моему варианту использования

3. Вы хотите ограничить свой выбор в django admin?

4. Я хочу выбрать поставщика из списка, затем из этого конкретного поставщика выбрать только элементы, связанные с ним, в представлении. Когда я выбираю «поставщик x», на выбор должны быть доступны только товары, переносимые поставщиком x … надеюсь, это имеет смысл.

5. Если вы хотите выбрать и поставщика, и товар на одной странице, вам нужно написать несколько js. Вы должны прослушать изменения поля поставщика, и после выбора поставщика вы должны получить элементы, связанные с этим поставщиком, и просмотреть их как параметры элемента вашего заказа.