我有一个与作者有外键关系的文章模型需要使用limit_choices_to,因为我在数据库中有超过2,000个可能的作者。问题是当这些作者不再满足limit_choices_to标准时(例如它们变为非活动状态),当我编辑旧文章时它们会从作者字段中消失,因此我无法将它们保存为那些旧文章的作者。
如果在保留字段中的值的同时使用limit_choices_to,即使否则limit_choices_to会将其排除?
我尝试过自定义save()和 init ,使用clean()重写原始值,甚至尝试使用自定义管理表单但没有成功。当然有人遇到了这种困境,我可能会错过一些简单的事情,但我很难过。
答案 0 :(得分: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))