gpt4 book ai didi

django - 在django中,如何根据同一模型中的另一个字段限制一个foreignfield的选择?

转载 作者:行者123 更新时间:2023-12-04 02:06:19 25 4
gpt4 key购买 nike

我有这些模型(我已将字段数量限制为仅需要的字段)

class unit(models.Model):
name = models.CharField(max_length=200)

class project(models.Model):
name = models.CharField(max_length=200)

class location(address):
project = models.ForeignKey(project)

class project_unit(models.Model):
project = models.ForeignKey(project)
unit = models.ForeignKey(unit)

class location_unit(models.Model):
project = models.ForeignKey(project)
#Limit the selection of locations based on which project has been selected
location = models.ForeignKey(location)
#The same here for unit. But I have no idea how.
unit = models.ForeignKey(project_unit)

我的新手头脑就是不明白如何限制 location_unit 模型中的 location 和 unit 两个字段,只显示引用 location_unit 中所选项目的选项。我应该覆盖modelform并在那里进行查询还是可以使用limit_choices_to。无论哪种方式我都失败了

编辑:澄清一下,我希望这发生在 Django Admin 中。我也尝试过 formfield_for_foreignkey,但对我来说仍然不行。

编辑2:
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "unit":
kwargs["queryset"] = project_unit.objects.filter(project=1)
return db_field.formfield(**kwargs)
return super(location_unit_admin, self).formfield_for_foreignkey(db_field, request, **kwargs)

上面的代码片段有效。但当然我不希望项目指向 1。我如何引用模型 project_id?
我试过这个:
kwargs["queryset"] = project_unit.objects.filter(project=self.model.project.project_id)

但这不起作用(实际上我尝试了很多变体,是的,我是 Django 新手)

最佳答案

关于django - 在django中,如何根据同一模型中的另一个字段限制一个foreignfield的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com