Как фильтровать объекты по полям модели в Django - PullRequest
1 голос
/ 30 апреля 2020

У меня есть модель с именем Order, внешний ключ которой указывает на текущего пользователя.

class Order(models.Model):
customer_name = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name='customer_name',
)
order_individual_price = models.IntegerField(default=1)
order_default_price = models.IntegerField(default=1)
order_name = models.CharField(max_length=200)
order_quantity = models.IntegerField(default=1)
order_total_price = models.IntegerField(default=1)

В настоящее время у меня есть 2 объекта заказа от 2 разных пользователей. Как бы я отфильтровать объекты так, чтобы он показывал только объект от определенного пользователя c?

В настоящее время у меня есть следующий код: Order.objects.filter(customer_name='chironsus')

Это дает мне эту ошибку: ValueError : Field 'id' expected a number but got 'chironsus'.

1 Ответ

1 голос
/ 30 апреля 2020

'chironsus' не является первичным ключом User, возможно, это имя пользователя . Вы можете отфильтровать это с помощью:

Order.objects.filter(<b>customer_name__username</b>='chironsus')

Примечание : A ForeignKey не не сохраняет строковое представление (или имя) ссылочного объекта в столбце он хранит первичный ключ записи, на которую ссылается, в столбце с суффиксом _id к полю ForeignKey. Поэтому ForeignKey s обычно не заканчиваются суффиксом _name. Возможно, вы захотите переименовать поле customer_name в customer.

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