gpt4 book ai didi

python - 如何限制 Django raw_id_field 的 ForeignKey 选择的选择

转载 作者:太空狗 更新时间:2023-10-29 17:41:52 28 4
gpt4 key购买 nike

当使用 raw_id_fields 显示时,如何限制 Django 管理中的 ForeignKey 字段显示的选项?选项?

当呈现为选择框时,很容易define a custom ModelForm使用所需的选项设置该字段的查询集值。但是,当使用 raw_id_fields 呈现时,此查询集似乎被完全忽略。它会生成指向该 ForeignKey 模型的链接,允许您通过弹出窗口从该模型中选择任何记录。您仍然可以通过自定义 URL 来过滤这些值,但我找不到通过 ModelAdmin 执行此操作的方法。

最佳答案

我在我的 Django 1.8/Python 3.4 项目中使用类似于 FSp 的方法:

from django.contrib import admin
from django.contrib.admin import widgets
from django.contrib.admin.sites import site
from django import forms

class BlogRawIdWidget(widgets.ForeignKeyRawIdWidget):
def url_parameters(self):
res = super().url_parameters()
res['type__exact'] = 'PROJ'
return res

class ProjectAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['blog'].queryset = Blog.objects.filter(type='PROJ')
self.fields['blog'].widget = BlogRawIdWidget(rel=Project._meta.get_field('blog').remote_field, admin_site=site)

class Meta:
# Django 1.8 convenience:
fields = '__all__'
model = Project

class ProjectAdmin(admin.ModelAdmin):
form = ProjectAdminForm
raw_id_fields = ('blog',)

django.admin 中仅选择 blog.type == 'PROJ' 作为外键 Project.blog。不幸的是,因为最终用户可能并且愿意选择任何东西。

关于python - 如何限制 Django raw_id_field 的 ForeignKey 选择的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23617858/

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