保留值时,他们不再满足limit_choices_to标准
问题描述:
我有了与需要使用limit_choices_to因为我在数据库中超过2000名可能的作家作者的外键关系的文章模型。问题是,当这些作家不再满足limit_choices_to标准(例如它们变得无效),他们从当我编辑旧文章,所以我不能将它们保存为笔者对那些老的文章作者栏消失。保留值时,他们不再满足limit_choices_to标准
如何使用limit_choices_to而在该领域保持的价值,即使它会受limit_choices_to被排除在外?
我试过用自定义save()和init,使用clean()重写原始值,甚至尝试使用自定义的管理窗体而没有成功。当然有人遇到了这种困境,我可能错过了一些容易的事情,但我很难过。
答
我认为这样做的方法是在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))
完美的作品!我必须做的唯一的调整是将current_author_id = self.instance.author_id改为:current_author_id = self.instance.author_id.id。你不知道我是多么感激你的答案。谢谢! – Jamie 2010-09-06 00:07:31