Отношения Django OneToMany с использованием набора запросов ForeignKey - PullRequest
0 голосов
/ 18 января 2019

Я использую в модели в Django Framework OneToMany отношения с использованием ForeignKey.

Что мне нужно сейчас, и я не знаю, как это сделать, - это создать набор запросов для любого идентификатора в таблице. Порядок, в котором идентификаторы имеют ключ fk в строке Line, который я хочу показать на html-странице.

например, я хочу показать в HTML-шаблоне что-то вроде этого:

id_order | id_line
1        |    2
2        | 3,4,8
10       |    7

, что смутило меня, потому что я думаю, что нам нужно поменять внешний ключ.

Вот модель:

django.db import models

class Order(models.Model):
    order_name = models.CharField(max_length=254)

class Line(models.Model):
    f= models.ForeignKey(Order, blank=True, null=True,verbose_name='order')
    name = models.CharField(max_length=254)

    def __unicode__(self):
        return self.name

Есть идеи, как это сделать?

1 Ответ

0 голосов
/ 18 января 2019

Я полагаю в Заказ Данные таблицы:

id  order_name
1   order 1
2   order 2
10  order 10

Строка данные таблицы:

id  name    f_id
2   line 2  1
3   line 3  2
4   line 4  2
7   line 1  10
8   line 5  2

Затем я запускаю следующий запрос

lines = Line.objects.select_related('order').values('f_id', 'id')

Он вернет следующие результаты:

<QuerySet [{'f_id': 1, 'id': 2}, {'f_id': 2, 'id': 3}, {'f_id': 2, 'id': 4}, {'f_id': 2, 'id': 8}, {'f_id': 10, 'id': 7}]>

select_related возвращает QuerySet, который будет «следовать» отношениям внешнего ключа, выбирая дополнительные данные связанного объекта при выполнении своего запроса.

Обновление: В шаблоне

{% for line in lines %}
    <p>{{ line.f_id.name }}</p>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...