У меня есть 5 полей, но мне нужно искать по "имени пользователя" в "поле поиска". как мы можем сделать это в приложении DJango

В моем приложении есть такие поля как телефон, имя пользователя, адрес, id. но мне нужна только информация о поле "имя пользователя", когда я ищу его в строке поиска. как мы можем это сделать. может ли кто-нибудь помочь мне с кодом DJango

Вы выполняете поиск по системе? Если да, то используйте get_queryset(self). Это вернет имя пользователя, которое вы ищете. И get_context_data()

 def get_queryset(self):
    return User.objects.filter(username__icontains=self.request.GET.get("q"))

def get_context_data(self, *args, **kwargs):
    context = super().get_context_data(*args, **kwargs)
    context["q"] = f'q={self.request.GET.get("q")}&'
    return context

Запишите это в ваше представление, где находится ваше приложение поиска. в шаблоне форма поиска должна иметь name='q'

Предположим, у вас есть модель с именем class Department(models.Model) с 2 полями (название, описание) в models.py вот так:

from django.db import models

class Department(models.Model):
    DEPT_NAME = (
        ('Staff', 'Staff'),
        ('Manager', 'Manager'),
    )
    name = models.CharField(max_length=15, choices=DEPT_NAME)
    description = models.CharField(max_length=100, null=True, blank=True)

    def __str__(self):
        return self.name

На странице администратора Django вам нужен результат поиска только по полю name.

В вашем admin.py используйте search_fields атрибут ModelAdmin:

from django.contrib import admin
from .models import *

@admin.register(Department)
class DepartmentAdmin(admin.ModelAdmin):
    DEPT_NAME = (
        ('Staff', 'Staff'),
        ('Manager', 'Manager'),
    )
    name = models.CharField(max_length=15, choices=DEPT_NAME)
    description = models.CharField(max_length=100, null=True, blank=True)
    search_fields = ('id', 'name',) # <-- Choose any field you want Django search
Вернуться на верх