确定在特定django字段admin中要查找的字段(select2)

时间:2018-06-07 12:50:41

标签: python django django-admin jquery-select2

我有这个模型

class Appointment(models.Model):
    patient = models.ForeignKey(Profile, on_delete=models.CASCADE)
    doctor = models.ForeignKey(Profile, on_delete=models.CASCADE)
    nurse = models.ForeignKey(Profile, on_delete=models.CASCADE)
    datetime = models.DateTimeField()
   ....

在django admin中我定义了搜索和自动填充字段:

search_fields = (
        'patient__first_name', 'patient__last_name',
        'doctor__first_name', 'doctor__last_name', 'nurse__first_name',
        'nurse__last_name', 
    )

    autocomplete_fields = ['patient', 'doctor', 'nurse']

我试过这样做:

def formfield_for_foreignkey(self, db_field, request, **kwargs):
    if db_field.name == 'patient':
        kwargs['queryset'] = Profile.objects.filter(role=PATIENT)
    if db_field.name == 'doctor':
        kwargs['queryset'] = Profile.objects.filter(role=DOCTOR)
    if db_field.name == 'nurse':
        kwargs['queryset'] = Profile.objects.filter(role=NURSE)

    return super().formfield_for_foreignkey(db_field, request, **kwargs)

但它不能与select2小部件一起使用,当我想添加搜索时适用。 有没有办法将查询集过滤到某个字段?

1 个答案:

答案 0 :(得分:0)

我没有在django中找到本地问题的任何解决方法。我使用了dal select2表单。我为每个Profile字段定义Select2QuerySetView,并在其中过滤查询集+按搜索过滤。