Изменение отображаемого содержимого в ячейках django -tables2 - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь нарезать строки в django -таблицах 2.

Вот моя модель:

#models.py

class Claim(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    text = models.TextField()
    date_added = models.DateTimeField(default=timezone.now)
    member = models.ForeignKey(User, on_delete=models.CASCADE)

Вот мое мнение:

#views.py

class ClaimsView(tables.SingleTableView):
    table_class = ClaimsTable
    queryset = Claim.objects.all()
    template_name = "portal/claims.html"

Вот моя таблица:

#tables.py

class ClaimsTable(tables.Table):
    class Meta:
        model = Claim
        fields = ('id', 'product', 'member', 'date_added', 'text')

И вот как я визуализирую таблицу в моем файле шаблона:

{# claims.html #}

{% render_table table %}

Моя цель - отобразить только первые 30 символов text в таблица для каждого утверждения.

Когда я ранее создавал эту таблицу без django -tables2, я делал это с {{ claim.text|slice:":30" }}.

Как я могу воспроизвести это в django -tables2 ?

Я просмотрел документацию и другие сообщения здесь, но, к сожалению, не смог этого понять.

1 Ответ

0 голосов
/ 03 июня 2020

После повторного чтения документации django -tables2 мне удалось решить эту проблему, создав каждый столбец отдельно (вместо использования class Meta, model и fields), а затем изменив способ визуализации столбца с помощью render_foo метод и value аргумент ключевого слова ( ссылка на соответствующую документацию ).

Вот измененный файл tables.py:

#tables.py

import django_tables2 as tables
from .models import Claim

class ClaimsTable(tables.Table):

    id = tables.Column()
    product = tables.Column()
    member = tables.Column()
    date_added = tables.Column()
    status = tables.Column()
    text = tables.Column()

    def render_text(self, value):
        return str(value[:30] + "...")

Это хорошо способ сделать это? Есть ли лучшие решения, которые мне следует рассмотреть?

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