Generic Relations/Generic Foreign Keys in the Django Admin

匿名 (未验证) 提交于 2019-12-03 02:50:02

问题:

I've been trying to display a Generic Foreign Key in the Django admin but can't get it working. I have a FullCitation class that can be linked to either a NonSupportedProgram or a SupportedProgram class. So, I have used a generic foreign key.

In the admin, I want users to only be able to select 'NonSupportedProgram' or 'SupportedProgram' from the content_type dropdown and then, from the object_id field, I need users to be able to select from a dropdown listing the existing NonSuportedPrograms or the existing Supported Programs, with the option of creating a new one. Is this possible? Where am I going wrong?

models.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',)

回答1:

This is a module that renders GenericForeignKeys in the Django Admin:

https://github.com/lexich/genericrelationview

It just doesn't work with a no conflict jQuery setup (like the one from Django CMS).



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!