python - 管理内联多对多 autocomplete_fields
问题描述
AcademicGroupInline
我想使用它的vk_chat
关系添加搜索
# models.py
class AcademicGroup(models.Model):
students = models.ManyToManyField(
'user.Student',
)
vk_chat = models.OneToOneField(
'Chat',
)
class Chat(models.Model):
owner_id = models.BigIntegerField()
name = models.CharField()
# admin.py
class AcademicGroupInline(admin.TabularInline):
model = AcademicGroup.students.through
autocomplete_fields = (
'vk_chat',
)
@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
inlines = [AcademicGroupInline]
但是我的结果有一个错误:
<class 'user.admin.AcademicGroupInline'>: (admin.E037) The value of 'autocomplete_fields[0]' refers to 'vk_chat', which is not an attribute of 'course.AcademicGroup_students'.
解决方案
首先,您应该注册 AcademicGroup 模型,就像您对 Student 所做的那样,并添加search_fields
应该具有vk_chat
值的属性。
@admin.register(AcademicGroup )
class AcademicGroupAdmin(admin.ModelAdmin):
....
search_fields = ['vk_chat']
其次,在您的 AcademicGroup 模型中,您应该在您的 M2M 字段中添加此参数related_name='academicgroups'
(您可以随意命名)。
第三,在您的 AcademicGroupInline 课程中,您应该Student.AcademicGroup.through
输入模型字段,而不是AcademicGroup.students.through
因为我想您想列出与学生关联的 Acadamicgroups 而不是相反的。
最后,在你的中autocomplete_fields
你只能放置由创建的模型的属性AcademicGroup.students.through
,所以我建议你print(model._meta.fields)
在你的AcademicGroupInline
类中使用打印这些属性(我想你会得到id
,student
和academicgroup
)。所以,你autocomplete_fields
应该有academicgroup
一个价值。
class AcademicGroupInline(admin.TabularInline):
model = Student.academicgroups.through
autocomplete_fields = (
'academicgroup',
)
推荐阅读
- vb.net - 在 vb.net 中乘以 2 百分比的价格和利润
- python-3.x - 如何隐藏“CombinedMultiDict([ImmutableMultiDict([]),ImmutableMultiDict([(”)python3烧瓶
- react-router - 具有下一个导出模式的动态路由
- java - 为什么我的图形叠加层没有出现在输入图像上?
- sas - 根据有效性范围聚合多个观察值
- reactjs - Material-UI + TypeScript(在“ClassNameMap<“container”|“navBar”|“section0”类型上找不到带有“string”类型参数的索引签名。)
- java - 将一维数组格式化为表格时遇到问题
- memory - 操作系统是否检查每条指令?
- r - 用多个箱线图制作一个图,但以列作为因素
- .net - 将日期从 Azure 表存储转换回用户的时区