2010-09-05 50 views
0

我有了与需要使用limit_choices_to因为我在数据库中超过2000名可能的作家作者的外键关系的文章模型。问题是,当这些作家不再满足limit_choices_to标准(例如它们变得无效),他们从当我编辑旧文章,所以我不能将它们保存为笔者对那些老的文章作者栏消失。保留值时,他们不再满足limit_choices_to标准

如何使用limit_choices_to而在该领域保持的价值,即使它会受limit_choices_to被排除在外?

我试过用自定义save()和init,使用clean()重写原始值,甚至尝试使用自定义的管理窗体而没有成功。当然有人遇到了这种困境,我可能错过了一些容易的事情,但我很难过。

回答

1

我认为这样做的方法是在init的自定义表单中,您可以动态修改作者字段的choices以包含当前作者。像(未经测试):

def __init__(self, *args, **kwargs): 
    super(MyForm, self).__init__(*args, **kwargs) 
    current_author_id = self.instance.author_id 
    self.fields['author'].queryset = Author.objects.filter(Q(is_active=True) | 
                 Q(pk=current_author_id)) 
+0

完美的作品!我必须做的唯一的调整是将current_author_id = self.instance.author_id改为:current_author_id = self.instance.author_id.id。你不知道我是多么感激你的答案。谢谢! – Jamie 2010-09-06 00:07:31