Нам нужна помощь
Как мне добиться следующего ...
Здесь у меня есть две модели example1 и example2, в которых я уже объединил две таблицы с помощью сериализаторов, теперь я хочу фильтровать с использованием полей (Patient_n_key, centre_master_short_name) либо в example2serializer, либо в example2viewsets.
models.py
class Example1(models.Model):
patient_id = models.AutoField(primary_key=True)
patient_n_key = models.CharField(max_length=15, blank=True, unique=True)
centre_master_short_name = models.CharField(blank=False, max_length=33)
class Meta:
managed = False
ordering = ['patient_id']
db_table = 'example1'
class Example2(models.Model):
appointment_id = models.AutoField(primary_key=True)
appointment_n_key = models.CharField(max_length=15, blank=True)
patient_n_key = models.ForeignKey('Example1',
db_column='patient_n_key', to_field='patient_n_key',
on_delete=models.CASCADE, related_name = "Example2_id")
centre_master_short_name = models.CharField(blank=False, max_length=33)
class Meta:
managed = False
ordering = ['appointment_id']
db_table = 'example2'
serializers1.py
class Example1serializer(serializers.ModelSerializer):
class Meta:
model=models.Example1
fields='__all__'
class Example2Serializer(serializers.ModelSerializer):
patient_n_key = Example1serializer(read_only=True)
class Meta:
model=models.Example2
fields='__all__'
views.py
class Example1viewset(viewsets.ModelViewSet):
queryset=models.Example1.objects.all()
serializer_class=serializers1.Example1serializer
lookup_field = 'patient_n_key'
class Example2viewset(viewsets.ModelViewSet):
queryset=models.Example2.objects.all()
serializer_class=serializers1.Example2serializer
lookup_field = 'appointment_n_key'
urls.py
router.register(r'example1', views.Example1viewset,
base_name='example1')
router.register(r'example2', views.Example2viewset,
base_name='example2')
Как я могу фильтровать с помощью наборов представлений в django rest framework? Или, если есть какой-либо другой предпочтительный способ, пожалуйста, перечислите его. Спасибо.
Он показывает ошибку, поскольку объект 'Example1' не повторяется.
Где вы получаете эту ошибку? Трудно сказать, что именно не так, так как я не уверен, как вы это настроили.
filter_backends = (DjangoFilterBackend) filter_fields = ('centre_master_short_name', 'Patient_n_key') это код в views.py Вот только я получаю эту ошибку
Привет, Эрик Сведин, я обновил код, можете проверить его.
вы можете использовать для этого библиотеку django-filtes
class Example1viewset(viewsets.ModelViewSet):
queryset=models.Example1.objects.all()
serializer_class=serializers1.Example1serializer
lookup_field = 'patient_n_key'
filter_backends = (DjangoFilterBackend)
filter_fields = ('centre_master_short_name','patient_n_key')
Спасибо, мистер Аман Кумар. Я использовал этот код выше, но он показывает ошибку, поскольку объект 'Example1' не повторяется
можешь дать мне журнал консоли?
Использование django_filters должно быть возможным, просто создав класс фильтра для вашей модели, а затем прикрепив его к вашему набору просмотра. Взгляните на страницу документации для интеграции с DRF: django-filter.readthedocs.io/en/latest/guide/…