Фильтр Django -filter и Django -tables2 со значениями ModelChoice без фильтрации - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть фильтр, использующий ModelChoiceFilter из столбца БД под названием 'semanas' (Weeks), и значения, которые там хранятся в данный момент:

2020-W5 2020-W6

У меня есть данные, отображаемые в таблице (django -tables2), когда я выбираю любое из этих двух значений, оно становится пустым, как будто ничего не находит, даже если я вижу их отображенными в таблице.

filters.py

class PagosFilter(django_filters.FilterSet):
    semana = django_filters.ModelChoiceFilter(
        queryset=Pagos.objects.values_list('semana', flat=True).distinct())

    class Meta:
        model = Pagos
        fields = ['semana', ]

models.py

class Pagos(models.Model):

    carro = models.ForeignKey(
        Carros, on_delete=models.CASCADE, blank=False, null=False)
    pago = models.DecimalField(max_digits=6, decimal_places=2)
    fecha = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    semana = models.CharField(max_length=20)
    startweek = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    endweek = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    renta = models.ForeignKey(
        Renta, on_delete=models.PROTECT, blank=False, null=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name_plural = "Pagos"

    def get_absolute_url(self):
        return reverse('pagos')

tables.py

class PagosTable(tables.Table):

    detalles = TemplateColumn(
        '<a class="btn btn btn-info btn-sm" href="{% url "pagos_edit" record.id %}">Abrir</a>')

    class Meta:
        model = Pagos
        template_name = "django_tables2/bootstrap-responsive.html"
        fields = ('carro', 'pago', 'fecha', 'semana', 'renta')
        attrs = {"class": "table table-hover table-sm"}

views.py

class PagosListView(SingleTableMixin, FilterView):
    model = Pagos
    table_class = PagosTable
    template_name = 'AC/payments.html'
    filterset_class = PagosFilter
    paginate_by = 10

Вот изображение, отображающее значения фильтра

enter image description here

Вот изображение, когда выбрано одно из значений фильтра:

enter image description here

Раньше у меня было значение «1», и оно работало так, что я не знаю, если да sh в 2020-W06 дает какой-то эффект.

Спасибо!

1 Ответ

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

Я исправил проблему, добавив в модель строковое представление.

models.py

class Pagos(models.Model):

    carro = models.ForeignKey(
        Carros, on_delete=models.CASCADE, blank=False, null=False)
    pago = models.DecimalField(max_digits=6, decimal_places=2)
    fecha = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    semana = models.CharField(max_length=20)
    startweek = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    endweek = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    renta = models.ForeignKey(
        Renta, on_delete=models.PROTECT, blank=False, null=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name_plural = "Pagos"

    def get_absolute_url(self):
        return reverse('pagos')

    def __str__(self):
        return self.semana
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...