Я немного смущен вашим вопросом, но нашел его интересным.
Вы хотите, чтобы раскрывающийся список авторов в строках был выбранным автором - поэтому в строке всегда будет только 1 выбор, текущий автор?
Ну, обычно вы бы использовали formfield_for_foreignkey
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey
Но у вас есть особый случай, когда каждая строка зависит от редактируемого объекта.
Я не видел каких-либо простых способов доступа к отредактированным объектам, поэтому я поместил определение formfield_for_foreignkey
в change_view
и назначил строки внутри функции представления.
class BookPrioInline(admin.TabularInline):
model = BookPrio
class AuthorAdmin(admin.ModelAdmin):
inlines = (BookPrioInline,)
def change_view(self, request, object_id, extra_context=None):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'book':
kwargs['queryset'] = Book.objects.filter(author__id=object_id)
return super(ItemInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
ItemInline.formfield_for_foreignkey = formfield_for_foreignkey
self.inline_instances = [ItemInline(self.model, self.admin_site)]
return super(AuthorAdmin, self).change_view(request, object_id,
extra_context=extra_context)
admin.site.register(Author, AuthorAdmin)