Как перезаписать список result_list в Django Admin?

Здесь новичок Django.

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

  • У меня есть модель SearchModel и в ней есть столбцы "id", "word" и объект Desert и этот объект имеет '1' как id

  • У меня есть другая модель с именем Result000 ('000' относится к первым трем буквам md5 слова "Desert"). Она имеет столбцы с именами "id", "word_id", "score", "title" и имеет объект с именем "Пустыня Сахара", word_id которого совпадает с id объекта Desert в первой таблице.

Нет ForeignKey или любых других типов отношений между элементами этой таблицы

вот вопрос:

  • Когда я ищу Desert в поле поиска SearchModel. Я хочу перечислить все объекты в таблице Result000, которые имеют word_id то же самое, что id объекта Desert в SearchModel
  • .

вот мой текущий код:

# root/admin.py

class BookAdmin(admin.ModelAdmin):

    def __init__(self, model, admin_site):
        self.list_display = [field.name for field in model._meta.fields]
        self.search_fields = [field.name for field in model._meta.fields]
        self.temp_model = "SearchModel"
        self.temp_term  = ""
        self.word_id = None
        self.search_term = self.temp_term
        
        super().__init__(model, admin_site)
        


    def get_search_results(self, request, queryset, search_term):
        queryset, may_have_duplicate = super().get_search_results(
            request, queryset, search_term
            )
      
        if len(search_term) > 0: self.search_term = search_term
        else: self.search_term = self.temp_term
          
        hashable, ret = self.md5_er(LowerTurkish(self.search_term).lower())

        if hashable: table_name = f"Result{ret}"
        else: table_name = request.path_info.split("/")[-2]


        try:
            # modelname = apps.get_model("root", table_name)
            modelname = self.model_finder(table_name)
            print("try içinde modelname: ", modelname)
            messages.info(
                    request,
                    f"`{table_name}` modeli içindeki arama sonuçları")


            word_id = self.model_finder(self.temp_model).objects.values_list("id")    
            std_content = modelname.objects.filter(word_id=word_id)

            queryset = std_content
         
        except:
            std_content = self.model_finder(self.temp_model).objects.all()

        # "nonetype not iterable" hatasının çözümü
        return queryset, may_have_duplicate


    def model_finder(self, table_name):
        return apps.get_model("root", table_name)


    def md5_er(self, data):
        """
            :@params: data: md5 hashi alınacak olan veri, type: string
        """
        hash_object = hashlib.md5(data.encode())    
        md5_hash = hash_object.hexdigest()    

        if md5_hash != "d41d8cd98f00b204e9800998ecf8427e":
            "d41d8cd98f00b204e9800998ecf8427e refers md5 of empty string"


            ret = md5_hash[:3] 
            return True, ret

        else:
            return False, False



Я могу получить то, что хочу, если SearchModel и таблица Desert имеют одинаковые имена столбцов, но это не работает, когда имена столбцов меняются. Я прочитал почти всю документацию Django, нашел примеры в интернете, просмотрел почти все записи на stackoverflow, но, как я уже сказал, я Django новичок 🥲. Заранее спасибо

Вернуться на верх