Пожалуйста, посмотрите на ModelAdmin.formfield_for_foreignkey () здесь .Недостатком является то, что приходится прибегать к raw SQL .
class AModelAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "foreign":
kwargs["queryset"] = B.objects.raw('SELECT * FROM myapp_a where not exists (select id from myapp_b where b.id=a.foreign_id')
return super(AModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
ИМХО "ненулевые непустые уникальные FKs" выглядит как хорошая возможность переосмыслить ваше моделирование - возможно, объединение двух моделей,Каждый раз, когда я чувствовал, что слишком сильно борюсь в Джанго, я пытался сделать что-то наивное.