Как создать таблицу другого пользователя (студентов и преподавателей) в django

#python #django

#python #django

Вопрос:

Я использую django и сейчас испытываю некоторую путаницу. Я хочу создать что-то, где таблица teachers будет находиться в отношениях onetomany с таблицей students. Но я не смог создать другую таблицу student. Любой совет или ресурс, пожалуйста?

Комментарии:

1. Что значит «не удалось создать другую таблицу студентов»? Вы не можете создать модель Student, вы не уверены, как использовать ForeignKeys, или вы сталкиваетесь с ошибками?

2. @Stevy в django есть таблица пользователей по умолчанию, которую я сейчас использую, и я буду называть ее таблицей учителей. Я просто хочу создать другую таблицу под названием student table. Надеюсь, вы не поняли 🙂

3. Учащиеся будут входить в систему, используя свои учетные данные, полученные из этой таблицы

Ответ №1:

Я не уверен, в чем именно заключается ваш вопрос, но для создания таблиц / моделей, в которых у преподавателя есть один или несколько учеников, вы можете создавать свои модели следующим образом:

 from django.db import models
import uuid 


class Teacher(models.Model):
    teacher_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
    name = models.CharField(max_length=255)
    users = models.ManyToManyField('auth.User', related_name='teachers')

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'teacher'


class Student(models.Model):
    student_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
    teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, related_name='students')
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'student'
  

Комментарии:

1. Большое вам спасибо за ответ. Я знаю, что не очень хорошо это объяснил, приношу свои извинения. Но я просто хочу другую таблицу, в которой я мог бы сохранить имя пользователя студента, адрес электронной почты, хэшированные пароли, как в пользовательской модели по умолчанию. Вот и все

Ответ №2:

Просто попробуйте использовать внешние ключи. Отношений «Один ко многим» в Django не существует. Вы можете выбрать внешние ключи, которые помогут вам решить проблему.

Файл модели учителя

 class TeacherModel(model.Models):
    ...
    student_id = models.ForeignKey('Student', related_name='students_id')
    ...