我有三个Django型号:
class Test(models.Model):
pass
class Page(models.Model):
test = models.ForeignKey(Test)
class Question(model.Model):
page = models.ForeignKey(Page)
如果我向管理员注册Question
模型,就会得到一个带有所需Page
的下拉列表。现在,我需要修改什么来显示所需的Page
加上该页对应的Test
?
假设,如果我创建了三个页面,则下拉列表将包含以下值:Page1
、Page2
、Page3
。我想看看:Page1 - Test1
,Page2 - Test1
,Page3 - Test1
两种选择。
选项1:
创建一个新的
field
,复制forms.ModelChoiceField
,并重写label_from_instance
。这只会更改特定下拉字段的文本。当您访问列表中每个项的
Test
对象时,您可能需要确保传递给PageModelChoiceField
的queryset
具有select_related('test')
,否则它将对列表中的每个项产生DB命中。我没有测试过这个确切的代码,但是逻辑就在那里。等我能
选项B
更改
Page
的unicode表示形式。这将改变
Page
s在打印页面对象print(page_object)
,{{ page_object }}
时的显示方式。我个人更喜欢选择1
相关问题 更多 >
编程相关推荐