我與分類模型巫多對多關係博弈模型有多種類型(PLATFORM,類型,特徵等)Django管理動態表單域人口
class Game(models.Model):
taxonomy = models.ManyToManyField(Taxonomy)
class Taxonomy(models.Model):
TAXONOMY_ORDER = [
'PLATFORM',
'GAME_PROCESS',
'GRAPHICS',
'GENRE',
'CATEGORY',
'FEATURE'
]
type = models.CharField(choices=TAXONOMY_TYPES.items(), max_length=15)
我想從管理員刪除taxonomy
字段並添加獨立從TAXONOMY_ORDER
class GameAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(GameAdminForm, self).__init__(*args, **kwargs)
taxonomy_active = kwargs['instance'].taxonomy.all().values_list('id', flat=True)
for tax_type in Taxonomy.
self.fields['taxonomy_' + tax_type] = forms.MultipleChoiceField()
self.fields['taxonomy_' + tax_type].queryset = Taxonomy.objects.filter(type=tax_type)
self.Meta.fields.append('taxonomy_' + tax_type)
self.initial['taxonomy' + tax_type] = Taxonomy.objects.filter(
id__in=taxonomy_active,
type=tax_type
).values_list('id', flat=True)
class GameAdmin(admin.ModelAdmin):
form = GameAdminForm
def get_fieldsets(self, request, obj=None):
fieldsets = super(GameAdmin, self).get_fieldsets(request, obj)
for tax_type in Taxonomy.TAXONOMY_ORDER:
fieldsets[0][1]['fields'] += ['taxonomy_' + tax_type]
return fieldsets
每個分類型MultiplueChoises場我有兩個問題與此:
當我嘗試添加字段動態地我收到一個錯誤
Unknown field(s) (taxonomy_FEATURE, taxonomy_PLATFORM, taxonomy_CATEGORY, taxonomy_GRAPHICS, taxonomy_GENRE, taxonomy_GAME_PROCESS) specified for Game. Check fields/fieldsets/exclude attributes of class GameAdmin.
當我嘗試添加明確它們呈現空白的自定義字段
class GameAdminForm(forms.ModelForm): taxonomy_PLATFORM = forms.MultipleChoiceField() taxonomy_GAME_PROCESS = forms.MultipleChoiceField() taxonomy_GRAPHICS = forms.ChoiceField() taxonomy_GENRE = forms.MultipleChoiceField() taxonomy_CATEGORY = forms.MultipleChoiceField() taxonomy_FEATURE = forms.MultipleChoiceField() def __init__(self, *args, **kwargs): ***__init__ stuff***
儘管有必要明確地放下現場設置中的所有字段,但這是現在最好的解決方案!謝謝! –