在 Django 中,我有一个模型表单,它有一个字段是具有 300k 行的模型的 ForeignKey 值。SelectBox 不适用于这种规模。
管理界面中的 raw_id_fields/ForeignKeyRawIdWidget 正是我想要的,我让它适用于我自己的表单,从参考链接中借用示例:
from django.contrib import admin
admin.autodiscover()
from django.contrib.admin.widgets import ForeignKeyRawIdWidget
from django import forms
from .models import Post, Photo
class PostForm(forms.ModelForm):
photo = forms.ModelChoiceField(
Photo.objects.all(),
widget=ForeignKeyRawIdWidget(Post._meta.get_field("photo").rel,admin.site)
)
唯一的问题是外键查找弹出窗口的 url 是 http://mydomain.com/admin/photo/photo/?t=id&pop=1 所以这需要管理员权限才能访问。我想让普通用户能够搜索/填充外键。我应该怎么做,将一些管理应用程序代码复制/粘贴到我自己的应用程序中?
我的问题与此类似,但他们没有提及有关管理员权限问题的任何内容: raw_id_fields for modelforms
提前致谢!