Django - Доступ к полям объекта ForigenKey цепочки в шаблоне - PullRequest
0 голосов
/ 29 февраля 2020

Предполагается, что в приложении django будет следующий кенарий:

views.py:

def my_purchases(request):
    if request.method == 'GET':
        list_my_purchases = sorted(
            chain(
                Item_X_Licence.objects.filter(user=request.user, status=1),
                Item_Y_Licence.objects.filter(user=request.user, status=1)
            ), key=attrgetter('paid_date'), reverse=True
        )
        paginator = Paginator(list_my_purchases, 20)  # Show 20 per page
        page = request.GET.get('page')
        my_purchases = paginator.get_page(page)
        user = request.user
        args = {'user': user,
                'my_purchases': my_purchases,
                }
        return render(request, 'App/my_purchases.html', args)

и следующие 2 модели (Item_X и Item_Y в основном совпадают, поэтому я буду показать это только для одного из них здесь)

models.py

class Item_X_Licence(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    item = models.ForeignKey(Item_X, on_delete=models.CASCADE)
    status = models.IntegerField(choices=PAYMENT_STATUS, default=0)
    paid_date = models.DateTimeField(auto_now_add=True)

...

class Item_X(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=25)

....

My Теперь возникает вопрос:

Как получить доступ к заголовку Item_X в шаблоне my_purchases. html? в настоящее время я могу получить только сам объект Item_X_Licence (id), но это в основном все ...

{% for my_purchases in my_purchases %}
   <tr class="font-size-small">
       <td>{{ my_purchases }}</td>
   </tr>
{% endfor %}

В настоящее время list_my_purchases принимает Item_X_Licence, но я не знаю, как я могу получить Item_X и поля, такие как автор и название, так как я хочу отобразить их в моем шаблоне.

спасибо:)

1 Ответ

0 голосов
/ 29 февраля 2020

Чтобы получить доступ к Item_x в шаблоне, вы можете сделать что-то подобное в l oop

{{list_my_purchases.item.title}}

В общем, Django предварительно выбрал все связанные объекты, так что вы можете получить доступ к данные только с помощью '.' обозначение и переход к правильному атрибуту.

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