基於麥金太爾的答案(謝謝):
from django.db.models import Q
from isbnlib import get_isbnlike, is_isbn10, is_isbn13, to_isbn10, to_isbn13
class Question_Admin(admin.ModelAdmin):
def get_search_results(self, request, queryset, search_term):
queryset, use_distinct = super(Question_Admin, self).get_search_results(request, queryset, search_term)
isbn = get_isbnlike(search_term, level='normal')
if isbn:
if is_isbn10(isbn[0]):
converted = to_isbn13(isbn[0])
else:
converted = to_isbn10(isbn[0])
queryset |= self.model.objects.filter(Q(isbn=isbn[0]) | Q(isbn=converted))
return queryset, use_distinct
我覺得缺了點什麼。也許我的問題並不像我想象的那麼清晰,但我需要的是做一個WHERE OR查詢,因爲我不知道db中存儲了什麼樣的isbn(10或13)。 search_term可能是好的,也可能是將其轉換爲13(或10,取決於原始isbn search_term)。 –
我回答我自己的問題。謝謝你的幫助。 –