Item という名前のモデルを持つ Expenses と Sales の 2 つのアプリを含む Django プロジェクトがあります。項目の選択を容易にするためにdjango-autocomplete-lightを使用しています。これは、最後に登録したチャネルに応じて経費または売上のいずれかで機能しますが、他のチャネルには同じアイテムが誤って表示されます。
autocomplete_light_registry.py
from sales.models import Item as SalesItem
from expenses.models import Item as ExpenseItem
class ExpenseChannel(autocomplete_light.ChannelBase):
def query_filter(self, results):
q = self.request.GET.get('q', None)
if q:
if results.model == ExpenseItem:
results = results.filter(
Q(name__icontains=q)
return results
class SalesChannel(autocomplete_light.ChannelBase):
def query_filter(self, results):
q = self.request.GET.get('q', None)
if q:
if results.model == SalesItem:
results = results.filter(
Q(name__icontains=q)
return results
autocomplete_light.register(ExpenseItem, ExpenseChannel, placeholder='Select an item (e)')
autocomplete_light.register(SalesItem, SalesChannel, placeholder='Select an item (s)')
admin.py
販売アプリの場合、同様の費用
import autocomplete_light
class SalesItemInline(admin.TabularInline):
fields = ('item', )
model = SalesItem
form = autocomplete_light.modelform_factory(SalesItem)
オートコンプリート フィールドを使用しているときにログを確認すると、両方のビューから同じ URL が取得されていることがわかります。
"GET /autocomplete/channel/ItemChannel/?q= HTTP/1.1" 200 1416
売上のリストが管理売上ビューに返され、経費のリストが返されるように構成するにはどうすればよいですか。項目は管理経費ビューに返されますか?