gpt4 book ai didi

django - 在 Django 管理员中,在多对一关系中,显示一个选择列表以从 "Many"中选择 EXISTING "One"

转载 作者:行者123 更新时间:2023-12-03 21:19:06 24 4
gpt4 key购买 nike

想象一下我们有一个这样的模型:

class Container(models.Model):
name = models.CharField(max_length=60)

class Element(models.Model):
container = models.ForeignKey(Container, blank=True, null=True)
Container是一, Element是许多。

在 Django 管理员中,如果我添加一个 StackedInlinemodel=ElementinlinesContainer模型管理员:
class Inline(admin.StackedInline):
model = Element

class ContainerAdmin(admin.ModelAdmin):
inlines = (Inline,)

admin.site.register(Container, ContainerAdmin)

我最终得到了一个表单集,允许我输入 新品 Element添加容器窗体上的对象。
相反,我想获得一个选择小部件,以选择 现有 Element对象。

在不引入额外模型的情况下这可能吗?

最佳答案

我认为你应该能够这样做:

class ContainerAdminForm(forms.ModelForm):
class Meta:
model = Container
fields = ('name',)
element_set = forms.ModelMultipleChoiceField(queryset=Element.objects.all())

class ContainerAdmin(admin.ModelAdmin):
form = ContainerAdminForm

# register and whatnot

我不知道我的项目中有这样的东西,但如果我发现了什么,我会告诉你的。您可能还必须覆盖 save()表单上的方法以实际保存所选 Element s;我不知道是否命名字段 element_set (或任何反向关系的名称)就足够了。

关于django - 在 Django 管理员中,在多对一关系中,显示一个选择列表以从 "Many"中选择 EXISTING "One",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31881878/

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