Python Django模型中继承类关系的创建

Python Django模型中继承类关系的创建,python,django,django-models,Python,Django,Django Models,我正在建立一个导师和教练网站。我一直在设计使用Django模型的数据库应该是什么样子。请帮我纠正一下 实体: 用户(用户名、密码、名称) 用户子类 教练(小时费率,科目) 学生() 关系: 辅导(教练用户名、导师用户名、日期) 类用户(models.Model): 用户名 以下是我实现的Django模型: class User(models.Model): username = models.CharField(primary_key=True, max_length=100

我正在建立一个导师和教练网站。我一直在设计使用Django模型的数据库应该是什么样子。请帮我纠正一下

  • 实体:
    • 用户(用户名、密码、名称)
    • 用户子类
      • 教练(小时费率,科目)
      • 学生()
  • 关系:

    • 辅导(教练用户名、导师用户名、日期)

      类用户(models.Model): 用户名

  • 以下是我实现的Django模型:

    class User(models.Model):
        username = models.CharField(primary_key=True, max_length=100, blank=False, null=False)
        password = models.CharField(max_length = 100, blank = False, null = False)
        name = models.CharField(max_length = 100, blank = False, null = False)
        def __str__(self):
            return self.username + " " + self.name
    
    class Coach(User):
        subject = models.CharField(max_length = 50, blank = False, null = False)
        hour_rate = models.FloatField(default = 0.00)
        def __str__(self):
            return self.username + " " + str(self.hour_rate)
    
    class Student(User):
        def __str__(self):
            return self.username + " " + self.name
    
  • 现在我已经有了继承设置,但是我不知道如何设置一个关系,其中的两个属性都是相同的用户实体。请帮帮我,这里一团糟

    class tutoring(models.Model):
       coausr = models.ForeignKey(User)
       tutusr = models.ForeignKey(User)
       date = models.DateTimeField(auto_now_add = False, auto_now = "True")
       def __str__(self):
            return self.coausr + " " + self.tutusr 
    

  • 如果我的Django模型的整个结构是错误的,或者我不打算这样做,请教我正确的方法。设置关系后,请演示如何在python shell中与之交互。谢谢。

    也许您应该使用django.contrib.auth.models导入用户的
    。它几乎实现了整个身份验证。检查一下。
    Tutee
    课程似乎没有必要;除了
    用户
    之外,它不保存任何其他信息?最后,你有两个相同实体的字段是可以的。@tuliocasagrande我实现的关系有问题,它可以编译,也可以工作。正确的编写方法是什么。您需要通知不同的
    相关名称
    coausr=models.ForeignKey(User,related\u name='coausr')
    tutusr=models.ForeignKey(用户,相关的_name='tututusr')
    。或者您可以使用子类:
    coausr=models.ForeignKey(Coach)
    tutusr=models.ForeignKey(Tutee)
    。来定义您的用户。通过这种方式,您可以在用户中对自己的属性使用所有身份验证的优点。