Relaciones genéricas / Claves foráneas genéricas en el administrador de Django

He estado tratando de mostrar una clave externa genérica en el administrador de Django, pero no puedo hacer que funcione. Tengo una clase FullCitation que se puede vincular a una clase NonSupportedProgram o SupportedProgram. Entonces, he usado una clave foránea genérica.

En el administrador, quiero que los usuarios solo puedan seleccionar 'NonSupportedProgram' o 'SupportedProgram' en el menú desplegable content_type y luego, desde el campo object_id, necesito que los usuarios puedan seleccionar de un menú desplegable que enumere los NonSuportedPrograms existentes o los existentes Programas compatibles, con la opción de crear uno nuevo. es posible? ¿A dónde me estoy yendo mal?

modelos.py

class FullCitation(models.Model)
    # the software to which this citation belongs
    # either a supported software program or a non-supported software program

    limit = models.Q(app_label = 'myprograms', model = 'supportedprogram') | models.Q(app_label = 'myprograms', model = 'nonsupportedprogram') 
    content_type = models.ForeignKey(ContentType), limit_choices_to = limit, )
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

    is_primary = models.BooleanField(help_text="Is this the Primary Citation for the software program?")
    class Meta:
        unique_together = ('content_type', 'object_id')
        app_label = 'myprograms'

reversion.register(FullCitation)

class NonSupportedProgram(models.Model):
    title = models.CharField(max_length=256, blank = True)
    full_citation = generic.GenericRelation('FullCitation')

    class Meta:
        app_label = 'myprograms'
reversion.register(NonSBGridProgram)

class SupportedProgram(models.Model):
    title = models.CharField(max_length=256, blank = True)
    full_citation = generic.GenericRelation('FullCitation')
    # and a bunch of other fields.....

admin.py

class FullCitationAdmin(reversion.VersionAdmin):
    fieldsets = (
    ('Which Program', { 
        'fields': ('content_type', 'object_id', ),
    }),
    ('Citation Information', {
        'fields': ('is_primary',),
    }),)
# autocomplete_lookup_fields = {
#     'generic': [['content_type', 'object_id']],
#     } 

# inlines = ['NonSupportedProgramInline', ]

list_display = ('content_object', 'is_primary',)
search_fields = ('content_object__title', )
# list_filter = ('content_object',)

Respuestas a la pregunta(1)

Su respuesta a la pregunta