Я сейчас пытаюсь создать фильтры с помощью 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
- это значение выбранных элементов, как я играл.Я хотел бы, чтобы они использовались в качестве фактического имени / метки для каждого выбранного элемента, в то время как идентификатор используется в качестве значения.