如何使用django为我的案例设计模型?

如何使用django为我的案例设计模型?,django,model,Django,Model,这里有两个角色:培训师和受训者。培训师可能有多个学员。而每个学员可能只有一名培训师或没有培训师 这是我的模型: class TrainerShip(models.Model): trainer = models.ForeignKey('Trainer') trainee = models.ForeignKey(User) request_date = models.DateTimeField(auto_now_add=True) accept_date = mod

这里有两个角色:培训师和受训者。培训师可能有多个学员。而每个学员可能只有一名培训师或没有培训师

这是我的模型:

class TrainerShip(models.Model):
    trainer = models.ForeignKey('Trainer')
    trainee = models.ForeignKey(User)
    request_date = models.DateTimeField(auto_now_add=True)
    accept_date = models.DateTimeField(auto_now_add=True)
    expiration_date = models.DateTimeField(auto_now_add=True)

class Trainer(models.Model):
    user = models.ForeignKey(User, unique=True)
    trainee = models.ManyToManyField(User, through=TrainerShip)
    introduction = models.TextField(max_length=500)
    certification = models.TextField(max_length=300)
    specialties = models.TextField(max_length=300)
    contact = models.TextField(max_length=100)
    active = models.BooleanField(default=False)
我在尝试创建db时遇到以下错误:

shen@shen-笔记本电脑:~/django/sutifang$./manage.py syncdb 错误:一个或多个模型未验证: registration.trainer:字段“user”的访问者与相关m2m字段“user.trainer\u set”冲突。在“用户”的定义中添加相关的\u name参数。 registration.trainer:m2m领域“受训者”的访问者与相关领域“User.trainer\u set”冲突。在“培训生”的定义中添加相关的_name参数


有人有办法解决这个问题吗?有没有更好的方法来模拟这种关系?

问题是外键建立了双向关系。这意味着您可以执行User.trainer_set以获取用户下的所有培训师模型,这意味着您有一个循环引用返回到用户数据库(获取培训师模型将获取其所有字段,其中一个字段是原始用户模型)

因此,要解决此问题,请向外键添加一个相关的名称参数以停止此循环依赖关系:

user = models.ForeignKey(User, unique=True, related_name='traineruser')

您可以将traineruser替换为数据库中没有表的内容。

非常感谢。这是我第一次在这里提出问题。再次感谢!