Django中FK的特殊过滤

Django中FK的特殊过滤,django,django-models,Django,Django Models,我正在开发一个应用程序来跟踪工厂的生产情况。我有一个表示输入的模型和一个表示流程的模型,流程模型与输入模型之间有一个FK def Inputs(models.Model): description = models.CharField(max_length=30) date = models.DateField() in_stock = models.BooleanField() def Process(models.Model): date = models

我正在开发一个应用程序来跟踪工厂的生产情况。我有一个表示输入的模型和一个表示流程的模型,流程模型与输入模型之间有一个FK

def Inputs(models.Model):
    description = models.CharField(max_length=30)
    date = models.DateField()
    in_stock = models.BooleanField()

def Process(models.Model):
    date =  models.DateField()
    input_item = models.ForeignKey("Inputs")
我希望能够过滤流程模型的管理表单中显示的输入列表。我已经知道怎么做了。(见Django文件)


问题是,;我想根据当前库存中的输入筛选可用模型,但我也希望能够访问旧记录,这些记录记录了不再库存的项目。当前设置在我尝试访问旧记录时不会显示这些项目。

旧对象指的是什么?现在你得到了库存,对吗?您想获得没有库存的商品吗?还是别的?对不起,我不明白你的问题。您正在过滤输入,而不是流程。您希望在哪里访问旧记录?当我输入“流程”记录时,我希望可用的期权都是“库存”的。随着时间的推移,有库存的物品不再有库存。假设我想访问一个月前输入的记录,这些输入不再有库存,但我仍然希望看到上个月输入的记录。现在的设置方式—当我尝试访问一个月前的记录时—该记录在管理员更改表单中显示为空白,因为当时输入的项目不再有库存,并且正在被筛选。当您访问旧记录时,不再有库存的项目不会显示在表单中,对吗?显示其他项目的记录与不显示其他项目的记录有何区别?创建/更新?@cdvv7788您很好地制定了我的问题。当我创建我的记录时,我希望这个过滤到位,但当我读取/更新时,我不希望发生过滤。
class ProcessAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "input_items":
            kwargs["queryset"] = Inputs.objects.filter(in_stock=True)
        return super(ProcessAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)