Django: l oop все записи в таблице, а затем получить поле из другой таблицы - PullRequest
0 голосов
/ 06 мая 2020

У меня есть две модели классов, называемые Buy и Sell:

class Buy(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    image = models.FileField()
    date = models.DateField()
    buy_price = models.DecimalField(max_digits=6, decimal_places=2)
    sell_price = models.DecimalField(max_digits=6, decimal_places=2)

    def __str__(self):
        return str(self.id)



class Sell(models.Model):    
    item = models.OneToOneField(Buy, on_delete=models.CASCADE)
    date = models.DateField()
    discount = models.DecimalField(max_digits=6, decimal_places=2)
    total_paid = models.DecimalField(max_digits=6, decimal_places=2)
    buyer = models.ForeignKey(Buyer, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.item)

В шаблоне я хотел бы отобразить все записи из таблицы Sell, а также атрибут класса изображения из таблицы Buy.

Ниже мой view.py:

def sell(request):
    buys = []
    sells = Sell.objects.order_by('-id')
    for sell in sells:
        buys.append(Buy.objects.filter(id=str(sell.item)))
    context = {'sells': sells, 'buys': buys}
    return render(request, 'sell.html', context)

Template:

        {% for sell in sells %}
        <tr>
            <td>{{ sell.item }}</td>
            <td>{{ sell.date|date:'d-m-Y' }}</td>
            <td>{{ buys[0].image}}</td>
            <td>R$ {{ sell.discount }}</td>
            <td>R$ {{ sell.total_paid }}</td>
            <td>{{ sell.buyer }}</td>
        </tr>
        {% endfor %}

Мне интересно, есть ли простой способ сделать это. Мне нужна помощь в моем view.py!

1 Ответ

2 голосов
/ 07 мая 2020

Вы можете получить доступ к объекту Buy, связанному с Sell внутри шаблона

{{sell.item.image}}

Если поле image соответствует названию, вы можете изменить это поле на a ImageField.

Тогда код для отображения изображения будет:

<img src="{{ sell.item.image.url }}">

(найдено здесь )

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