gpt4 book ai didi

python - 将外键选择限制为 ManyToMany 字段选择

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:08 28 4
gpt4 key购买 nike

考虑这个简单的 Django 模型:

class Apple(models.Model):
oranges = models.ManyToManyField(Orange, related_name='apples')
selected_orange = models.ForeignKey(Orange, related_name='apples_as_selected')

limit_choices_to 添加到 ForeignKey 字段的正确方法是什么,这样它将仅将选项限制为那些 Orange 对象在这种情况下选择了?

想要这样做:

selected_orange = models.ForeignKey(Orange, related_name='apples_as_selected',
limit_choices_to: {'apples__id': lambda: self.id})

但我不确定在这种情况下如何获取对 self 的引用。

最佳答案

解决此问题的一种方法是在 ModelForm 级别上,如下所示:

class AppleForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['selected_orange'].queryset = Orange.objects.filter(apples__id=self.instance.pk)

class AppleAdmin(admin.ModelAdmin):
form = AppleForm

如果存在一个优雅的解决方案,我仍然会很高兴能够解决我最初的问题。

关于python - 将外键选择限制为 ManyToMany 字段选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36281669/

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