Я хотел бы с уникальным полем получить имя модели, к которой он принадлежит.
Чтобы получить модель, к которой принадлежит поле, вы можете использовать model
атрибут :
Возвращает модель, для которой определено поле.Если в суперклассе модели определено поле, model
будет ссылаться на суперкласс, а не на класс экземпляра.
Выше ответит на ваш вопрос, но большая проблема связана сэто:
Предположим, что у вас есть школа с несколькими классами (каждый класс является моделью), и вы хотите найти ученика по его идентификационному номеру, получив название класса, в которомученик.
Это не устойчивая модель, и она вызовет проблемы, так как каждый класс означает новую таблицу.Эта структура вызовет у вас проблемы при поиске в учебных классах.
Вторая проблема заключается в том, что вы путаете значение поля с именем поля ,Первичный ключ (идентификатор) - это значение .Вы можете искать значения, если вы знаете, в каком поле они находятся, если вы хотите получить запись со значением первичного ключа 1
, вы бы написали запрос следующим образом:
SELECT * FROM classroom_table WHERE id = 1
В Django этоэто Classroom.objects.get(id=1)
Вы не можете пойти другим путем, то есть "найти мне таблицу, которая имеет значение" 1 "в поле id" , чтоВы просите сделать это здесь.
Вам необходимо исправить структуру базы данных так, чтобы была одна модель для студентов и одна модель для класса;и студент может принадлежать ко многим классам:
class Student(models.Model):
name = models.CharField(max_length=200)
class Classroom(models.Model):
students = models.ManyToMany(Student)
Теперь вы можете делать такие вещи, как найти все классы для студента с идентификатором 1 :
student = Student.objects.get(id=1)
for room in student.classroom_set.all():
print(room)