【问题标题】:Django search_fieldDjango 搜索字段
【发布时间】:2019-11-27 07:44:19
【问题描述】:

如何解决这个错误?原因 每当我搜索学生用户时,我都会收到错误消息,

错误

admin.py

@admin.register(StudentsEnrollmentRecord)
class StudentsEnrollmentRecordAdmin(admin.ModelAdmin):
    #inlines = [InLineSubject]
    list_display = ('lrn', 'Student_Users', 'Education_Levels', 'Courses', 'Section', 'Payment_Type', 'Discount_Type' ,'School_Year')
    #list_select_related = ('Student_Users')
    ordering = ('Education_Levels','Student_Users__lrn')
    list_filter = ('Student_Users','Education_Levels','Section','Payment_Type')
    search_fields = ('Student_Users',)


    def lrn(self, obj):
        return  obj.Student_Users.lrn

我的模型.py

class StudentsEnrollmentRecord(models.Model):
    Student_Users = models.ForeignKey(StudentProfile, related_name='students', on_delete=models.CASCADE,null=True)
    School_Year = models.ForeignKey(SchoolYear, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
    Courses = models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
    Section = models.ForeignKey(Section, related_name='+', on_delete=models.CASCADE, null=True,blank=True)
    Payment_Type = models.ForeignKey(PaymentType, related_name='+', on_delete=models.CASCADE, null=True)
    Discount_Type = models.ForeignKey(Discount, related_name='+', on_delete=models.CASCADE, null=True,blank=True)
    Education_Levels = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE,blank=True,null=True)

更新模型

class StudentProfile(models.Model):
   lrn = models.CharField(max_length=500,null=True)
   Firstname = models.CharField(max_length=500,null=True,blank=True)
   Middle_Initial = models.CharField(max_length=500,null=True,blank=True)
   Lastname = models.CharField(max_length=500,null=True,blank=True)
   Education_Levels= models.ForeignKey(EducationLevel, on_delete=models.CASCADE,blank=True,null=True)

【问题讨论】:

  • 去掉related_name='students'就可以了
  • 同样的错误,先生,
  • 检查我的答案和官方 django 文档以设置模型样式,您在下一个字段中有 related_name='+',删除它们并运行迁移
  • 先生,感谢您的回答,当我尝试您的回答并运行迁移时,我收到了同样的错误,
  • 给我看看你的 StudentProfile 模型

标签: python django django-admin search-form


【解决方案1】:

您需要提供来自StudentProfile 的特定字段 - 目前您的搜索字段是

search_fields = ('Student_Users',)

仅表示模型本身。您没有发布 StudentProfile 的架构,但例如,如果它包含 Lastname 字段,您应该像这样使用它:

search_fields = ('Student_Users__Lastname',)

要包含多个字段,您可以这样做

search_fields = ('Student_Users__Lastname', 'Student_Users__Firstname',)

你也可以

search_fields = ('=Student_Users__Lastname',)

为了“完全”匹配姓氏,前面的示例检查字段是否包含查询字符串

【讨论】:

    猜你喜欢
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多