use*_*885 4 python django admin
我想AcademicGroupInline使用其vk_chat关系添加对 with 的搜索
# 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]
Run Code Online (Sandbox Code Playgroud)
但我的结果有错误:
<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'.
Run Code Online (Sandbox Code Playgroud)
小智 8
首先,您应该注册AcademicGroup 模型,就像您对Student 所做的那样,并添加search_fields应具有vk_chat值的属性。
@admin.register(AcademicGroup )
class AcademicGroupAdmin(admin.ModelAdmin):
....
search_fields = ['vk_chat']
Run Code Online (Sandbox Code Playgroud)
其次,在您的AcademicGroup模型中,您应该在M2M字段中添加此参数related_name='academicgroups'(您可以根据需要命名)。
第三,在您的AcademicGroupInline课程中,您应该输入Student.AcademicGroup.through模型字段,而不是AcademicGroup.students.through因为我猜您想列出与学生相关的学术组,而不是相反。
最后,在您中,autocomplete_fields您只能放置由创建的模型的属性,因此我建议您在类中AcademicGroup.students.through使用打印这些属性(我认为您会得到,和)。所以,你应该有一个价值。print(model._meta.fields)AcademicGroupInlineidstudentacademicgroupautocomplete_fieldsacademicgroup
class AcademicGroupInline(admin.TabularInline):
model = Student.academicgroups.through
autocomplete_fields = (
'academicgroup',
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |