Определение значений и имен параметров поля выбора отдельно с помощью django-фильтра - PullRequest
0 голосов
/ 02 июля 2019

Я сейчас пытаюсь создать фильтры с помощью django-filters .Всякий раз, когда я пытаюсь отфильтровать чужой ключ для определенного атрибута другой модели, эти фильтры отображаются как:

  • Объект модели (1)
  • Объект модели (2)
  • Объект модели (3)

вместо фактического атрибута этого объекта.

В лучшем случае я бы хотел бытьвозможность индивидуально определить ключ и метки для некоторой опции множественного выбора.Ключи должны заканчиваться параметрами URL, а метки должны отображаться в форме.

Вот код:

models.py

class Content(models.Model):
    content_id = models.AutoField(primary_key=True)
    content_parent_id = models.IntegerField(blank=True, null=True)
    content_media = models.ForeignKey('Media', models.DO_NOTHING)
    content_date_fetched = models.DateTimeField(blank=True, null=True)
    content_date_created = models.DateTimeField(blank=True, null=True)
    content_text = models.TextField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'content'

class Media(models.Model):
    media_id = models.AutoField(primary_key=True)
    media_type = models.CharField(max_length=50)
    media_name = models.CharField(max_length=255),

    class Meta:
        managed = False
        db_table = 'media'

filters.py

import django_filters
from .models import Content, Media, File
from django import forms

class MediaFilter(django_filters.FilterSet):

    class Meta:
        model = Media
        fields = ['media_id', 'media_name']

class ContentFilter(django_filters.FilterSet):
    content_id = django_filters.CharFilter(lookup_expr='icontains')
    content_title = django_filters.CharFilter(lookup_expr='icontains')
    content_text = django_filters.CharFilter(lookup_expr='icontains')
    media = django_filters.ModelMultipleChoiceFilter(
        field_name='content_media_id__media_name',
        to_field_name='media_name', #option value
        queryset=Media.objects.all(),
        label = 'media_name',
        widget=forms.CheckboxSelectMultiple(),
    )

    class Meta:
        model = Content
        fields = ['content_title', 'content_text', 'content_id', 'media']

В текущем примере реальное имя media_name - это значение выбранных элементов, как я играл.Я хотел бы, чтобы они использовались в качестве фактического имени / метки для каждого выбранного элемента, в то время как идентификатор используется в качестве значения.

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