我一个应用程序命名Question
在那里我models.py定义两种型号Question
和Alternative
如下:
class Question(models.Model):
question = models.CharField(max_length=255, blank=False, null=False)
chapter = models.ForeignKey(Chapter, on_delete=models.CASCADE)
rating = models.IntegerField(default=1)
class Alternative(models.Model):
alternative = models.CharField(max_length=255, blank=False, null=False)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
我已经取得了在那里我已经创建了我希望出现在我的AlternativeForm
以及Alternative forms
管理视图,其中替代领域将出现在内嵌视图,但额外的字段值将不会被保存在一个数据库额外字段的自定义窗体Question
(因为我想要做一些手工操作与字段的值)。我forms.py
如下:
class AlternativeForm(forms.ModelForm):
extra_field = forms.BooleanField(required=False)
def save(self, commit=True):
extra_field = self.cleaned_data.get('extra_field', None)
# will do something with extra_field here...
return super(AlternativeForm, self).save(commit=commit)
class Meta:
model = Alternative
fields = '__all__'
在我admin.py
我做了他们之间的关系内嵌如下:
class AlternativeInline(admin.TabularInline):
form = AlternativeForm
model = Alternative
@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
inlines = [AlternativeInline,]
@admin.register(Alternative)
class AlternativeAdmin(admin.ModelAdmin):
model = Alternative
form = AlternativeForm
我在这种情况下,越来越AttributeError: Unable to lookup 'extra_field' on Alternative or AlternativeInline
。我想,以显示Question
apps管理视图的内嵌视图这些额外的领域。有没有办法做到这一点或什么是错的,我目前的做法。谢谢。
我找到了解决这一猜测时post。每个人都应该定义label
场的自定义字段类似如下避免这种错误AttributeError: Unable to lookup 'extra_field' on Alternative or AlternativeInline
。
class AlternativeForm(forms.ModelForm):
extra_field = forms.BooleanField(label='is_answer', required=False)
def save(self, commit=True):
# extra_field = self.cleaned_data.get('extra_field', None)
# ...do something with extra_field here...
return super(AlternativeForm, self).save(commit=commit)
要在管理的额外字段:
class YourModelAdmin(admin.ModelAdmin):
form = YourModelForm
fieldsets = (
(None, {
'fields': ('other fields here', 'extra_field',),
}),
)