Как передать ключи и значения в ModelForm ModelChoiceField в django
У меня есть три таблицы user, doctor и patient. Таблица User содержит имя пользователя, пароль, статус и т.д. Таблица User - это таблица auth в Django.
Таблицаdoctor содержит id, user_id (внешний ключ), и другую информацию.
таблицаpatient содержит doctor_assignid (внешний ключ), имя, и т.д.
Итак, пытаюсь получить имя пользователя из таблицы user и id из таблицы doctor. И передать эти данные в ModelForm ModelChoiceField.
class PatientForm(forms.ModelForm):
assigned_doctor=forms.ModelChoiceField(queryset=None,empty_label="Name of the Doctors",to_field_name='username')
class Meta:
model= patient
fields=['patient_first_name','patient_last_name','address','mobile','age','symptoms']
def __init__(self, *args, **kwargs):
self.request = kwargs.pop("request")
super(PatientForm, self).__init__(*args, **kwargs)
if self.request:
users = self.request.user.id
adminId = hospitalAdmin.objects.all().filter(user_id=users).values('pk')
doctors=doctor.objects.filter(assigned_hospitalAdmin=adminId[0]['pk'])
userTableDoctor = User.objects.filter(id__in=[i.user_id for i in doctors],status=True)
userTableDoctor = userTableDoctor.values('username','doctor__id')
assignedDoctorId = self.fields['assigned_doctor']
assignedDoctorId.queryset = userTableDoctor
Но, я получаю словарь типа querset следующим образом
, что не является приемлемым параметром для передачи. Итак, я хочу отображать имя пользователя, и если пользователь выбирает имя пользователя, бэкенд получает id доктора. Итак, есть ли способ передать как объект или любой другой способ решить эту проблему
Удалите эту строку:
userTableDoctor = userTableDoctor.values('username','doctor__id')