#python #django #sqlite
Вопрос:
model.py
class LabTable(models.Model):
LabNo = models.AutoField(primary_key=True)
Pid = models.IntegerField()
Weight = models.IntegerField()
DoctorId = models.ForeignKey(DoctorTable,on_delete=models.CASCADE)
Date = models.DateField()
Category = models.CharField(max_length=50)
PatientType = models.CharField(max_length=50)
Amount = models.IntegerField()
class DoctorTable(models.Model):
DoctorId = models.AtuoField(primary_key = True)
DoctorName = models.CharField(max_length = 50)
Department = models.CharField(max_length = 100)
1. Здесь я создал лабораторную модель и внешний ключ с помощью doctor table. Я хочу использовать doctor table для представления данных в выпадающем списке.
Комментарии:
1. Не совсем понятно, что вы хотите сделать. Я предполагаю, что вы ищете пакет, подобный
django-select2
.2. Спасибо за предложение @WillemVanOnsem я пробовал это, но у меня это не сработало. На самом деле я ищу что-то, где я могу сохранить DoctorID в лабораторной таблице и хочу отобразить doctorName против этого DoctorID в выпадающем списке и в том же случае редактировать / обновлять запись.
3. Вы уже храните идентификатор доктора в Labtable, это то, что
ForeignKey
делает.4. Да, но теперь проблема в том, что я получаю данные как объект в выпадающем списке, где мне нужно только doctorName
5. можете ли вы поделиться
DoctorTable
моделью?
Ответ №1:
Вы можете указать, как отображать DoctorTable
объект модели, реализовав __str__
метод для этой модели, поэтому:
class DoctorTable(models.Model):
DoctorId = models.AutoField(primary_key=True)
DoctorName = models.CharField(max_length=50)
Department = models.CharField(max_length=100)
def __str__(self):
return self.DoctorName
Примечание: обычно имена полей в модели Django записываются в snake_case, а не в PascalCase, поэтому оно должно быть:
doctor_name
вместо.DoctorName
Примечание: Модели обычно не имеют
Table
суффикса. Модель — это не таблица, она хранится в реляционной базе данных в виде таблицы, но даже тогда у нее есть дополнительная логика, такая как валидаторы, менеджеры и т. Д.
Комментарии:
1. Спасибо, я попробую это.