danb333
danb333

Reputation: 1284

Django teacher students easy solution. Use separate tables, or permissions and groups? How? Other ideas?

How would you cope with following problem? There are teachers, and students. Student can not view pages dedicated to teachers, and teachers can view pages dedicated to students. Teachers can have list of just students they teach. I want both teachers and students to use build in User to let them login.

I have following ideas:

Separate table for teacher and student with foreign key to build in user? - but the question is, can I easily render pages and distinguish who is teacher and who is student.

Permissions? Groups? and just one table Users? But to be honest I did not find the way how could I manage to achieve that what I mentioned at the beginning.

Would be grateful for any ideas, suggestions and comments, as I am thinking of it for HOURS!

Upvotes: 2

Views: 1855

Answers (1)

John Carter
John Carter

Reputation: 7005

As a rough start:

User Table

  • user id (primary key)
  • details (name, address, phone --i.e. common to a user of the system whether student or teacher.)

Student Table

  • user id (foreign key relationship to user table)
  • any student specific details (enrolment date, homeroom, etc.)

Teacher Table

  • a user id (foreign key relationship to user table)
  • teacher specific stuff (seniority, salary, etc.)

Classes Table

  • a class id (primary key).
  • details of the class

Grades Table

  • a user id (foreign)
  • a class id (foreign) -> these two keys used for doing a grade query.
  • a grade

(if a student can take a class multiple times, and have multiple grades, the grades table will need to have its own key, possibly with sequence type to establish the order in which they received them).

Your page that is displaying the user can query the user table display that information, followed by their student or teacher specific information. If its possible for a student to be a teacher, then you're able to do that too.

Upvotes: 5

Related Questions