Django - получает все связанное в цикле шаблона - PullRequest
0 голосов
/ 24 января 2019

У меня есть таблица данных, которая создает строку для каждого Store объекта. Я использую Django 2.1

<tbody>
{% for store in stores %}
    <tr id="table-row">
        <td><a href="/stores/{{ store.pk }}">{{ store.store_number }}</a></td>
        <td><a href="/stores/{{ store.pk }}">{{ store.name }}</a></td>
        <td>{{ store.phone }}</td>
        <td>{{ store.city }}</td>
        <td>{{ store.state }}</td>
        {% for circuit in circuits %}
            <td>{{ circuit }}</td>
        {% endfor %}
        <td>{{ store.postal }}</td>

    </tr>
{% endfor %}
</tbody>

Я хочу создать столбец таблицы для каждого контура, где store - это номер магазина.

Модели:

class Store(models.Model):
    store_number = models.IntegerField(default=0000, unique=True)
    name = models.CharField(max_length=100)
    phone = models.CharField(max_length=15)
    xo_tn = models.CharField(max_length=15, null=True)
    street_address = models.CharField(max_length=50, null=True)
    city = models.CharField(max_length=50, null=True)
    state = models.CharField(max_length=50, null=True)
    postal = models.CharField(max_length=15, null=True)
    timezone = models.CharField(max_length=40, null=True)
    date_opened = models.DateField(blank=True, null=True)
    date_closed = models.DateField(blank=True, null=True)

    def __str__(self):
        string = '{0} - {1}'.format(self.store_number, self.name)
        return string

    def number(self):
        return self.store_number

class Circuit(models.Model):
    circuit_id = models.CharField(max_length=100)
    store = models.ForeignKey(Store, null=True, on_delete=models.SET_NULL)
    provider = models.ForeignKey(Provider, blank=True, null=True, on_delete=models.SET_NULL)
    configuration = models.ForeignKey(CircuitConfiguration, null=True, on_delete=models.SET_NULL)
    registered_on = models.DateTimeField(auto_now=True)
    delivered_on = models.DateField(auto_now=True)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return self.circuit_id

Вид:

@login_required
def stores(request):
    stores = Store.objects.exclude(street_address__contains="closed").all()
    context = {
        'stores':stores,  
    }
    return render(request, 'all_stores.html', context)

Я еще много чего не пробовал, потому что не уверен, как бы я мог это сделать, не разрывая отношения и не выполняя запрос из моего интерфейса.

1 Ответ

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

В отношениях с Django вы можете использовать обратный метод доступа.См. этот документ .

. В вашем случае код вашего шаблона будет:

<tbody>
{% for store in stores %}
    <tr id="table-row">
        <td><a href="/stores/{{ store.pk }}">{{ store.store_number }}</a></td>
        <td><a href="/stores/{{ store.pk }}">{{ store.name }}</a></td>
        <td>{{ store.phone }}</td>
        <td>{{ store.city }}</td>
        <td>{{ store.state }}</td>
        {% for circuit in store.circuit_set.all %}
            <td>{{ circuit }}</td>
        {% endfor %}
        <td>{{ store.postal }}</td>

    </tr>
{% endfor %}
</tbody>

См. этот вопрос также.

...