Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有相同两个类的多对多关系-Django_Django_Many To Many_Models - Fatal编程技术网

具有相同两个类的多对多关系-Django

具有相同两个类的多对多关系-Django,django,many-to-many,models,Django,Many To Many,Models,我有两个类,它们之间有两个多对多关系。因为相邻的表也必须有附加属性,所以我显式地定义了它们。但是我得到一个错误,说我需要更改相关的名称。不知道在哪里做这个。非常感谢您的帮助 以下是我的models.py代码: class Client(models.Model): first_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) email = models

我有两个类,它们之间有两个多对多关系。因为相邻的表也必须有附加属性,所以我显式地定义了它们。但是我得到一个错误,说我需要更改相关的名称。不知道在哪里做这个。非常感谢您的帮助

以下是我的models.py代码:

class Client(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    email = models.CharField(max_length=255)
    password = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    objects = UserManager()

    def __repr__(self):
        return "<User object: {} {} {} {}>".format(self.first_name, 
self.last_name, self.email, self.password)

class Therapist(models.Model):
    name = models.CharField(max_length=255)
    reviews = models.ManyToManyField(Client, through="Review")
    appts = models.ManyToManyField(Client, through="Appointment")
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    objects = UserManager()

    def __repr__(self):
        return "<Book object: {}>".format(self.title)



class Review(models.Model):
    reviewer = models.ForeignKey(Client, on_delete=models.CASCADE)
    therapist_reviewed = models.ForeignKey(Therapist, 
on_delete=models.CASCADE)
    rating = models.IntegerField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    content = models.TextField()

    def __repr__(self):
        return "<Review object: {} {}>".format(self.book_reviewed, 
self.reviewer)

class Appointment(models.Model):
    booked_therapist = models.ForeignKey(Therapist, 
on_delete=models.CASCADE)
    booked_client = models.ForeignKey(Client, on_delete=models.CASCADE)
    date = models.DateTimeField()
    massage = models.CharField(max_length=255)
类客户端(models.Model):
first_name=models.CharField(最大长度=255)
last_name=models.CharField(最大长度=255)
email=models.CharField(最大长度=255)
密码=models.CharField(最大长度=255)
已创建\u at=models.DateTimeField(自动\u now\u add=True)
更新的\u at=models.DateTimeField(自动\u now=True)
objects=UserManager()
定义报告(自我):
返回“”格式(self.first\u名称,
self.last_name、self.email、self.password)
班级治疗师(models.Model):
name=models.CharField(最大长度=255)
reviews=models.ManyToManyField(客户机,通过=“Review”)
appts=models.ManyToManyField(客户,通过=“约会”)
已创建\u at=models.DateTimeField(自动\u now\u add=True)
更新的\u at=models.DateTimeField(自动\u now=True)
objects=UserManager()
定义报告(自我):
返回“”格式(self.title)
课堂复习(models.Model):
reviewer=models.ForeignKey(客户端,on_delete=models.CASCADE)
治疗师\u回顾=模型。外籍(治疗师,
on_delete=models.CASCADE)
rating=models.IntegerField()
已创建\u at=models.DateTimeField(自动\u now\u add=True)
更新的\u at=models.DateTimeField(自动\u now=True)
content=models.TextField()
定义报告(自我):
返回“”格式(self.book\u已审核,
自我评价者)
班级预约(models.Model):
预约治疗师=模特。外籍(治疗师,
on_delete=models.CASCADE)
预订的客户机=models.ForeignKey(客户机,on\u delete=models.CASCADE)
日期=型号。日期时间字段()
按摩=models.CharField(最大长度=255)
班级治疗师(models.Model):
name=models.CharField(最大长度=255)
reviews=models.ManyToManyField(客户,相关的治疗师,通过=“Review”)
appts=models.ManyToManyField(客户,相关的治疗师,通过=“预约”)
已创建\u at=models.DateTimeField(自动\u now\u add=True)
更新的\u at=models.DateTimeField(自动\u now=True)
objects=UserManager()
定义报告(自我):
返回“”格式(self.title)
如果您没有为
many\u to\u many
字段分配相关的\u名称,则默认的相关字段将设置为model\u lower\u case\u set,但是当您有两个
many\u to\u many
字段与同一个模型相关时,两个文件的默认相关\u名称与model\u lower\u case\u set相同,使用
相关\u name
查询queryset时,这将导致冲突。

班级治疗师(models.Model):
name=models.CharField(最大长度=255)
reviews=models.ManyToManyField(客户,相关的治疗师,通过=“Review”)
appts=models.ManyToManyField(客户,相关的治疗师,通过=“预约”)
已创建\u at=models.DateTimeField(自动\u now\u add=True)
更新的\u at=models.DateTimeField(自动\u now=True)
objects=UserManager()
定义报告(自我):
返回“”格式(self.title)

如果您没有为
many\u to\u many
字段分配相关的\u名称,则默认的相关字段将设置为model\u lower\u case\u set,但是当您有两个
many\u to\u many
字段与同一个模型相关时,两个文件的默认相关\u名称与model\u lower\u case\u set相同,使用
相关\u name
查询查询集时,这将导致冲突。

共享回溯请求错误:application.theraper.appts:(fields.E304)“theraper.appts”的反向访问器与“theraper.reviews”的反向访问器冲突。提示:在“治疗师.appts”或“治疗师.reviews”的定义中添加或更改相关的_name参数。application.theraper.reviews:(fields.E304)“治疗师.评论”的反向访问器与“治疗师.应用程序”的反向访问器冲突。提示:在“治疗师.评论”或“治疗师.评论”的定义中添加或更改相关的_name参数。共享回溯请求错误:application.theraper.appts:(fields.E304)“治疗师.应用”的反向访问器与“治疗师.评论”的反向访问器冲突。提示:在“治疗师.appts”或“治疗师.reviews”的定义中添加或更改相关的_name参数。application.theraper.reviews:(fields.E304)“治疗师.评论”的反向访问器与“治疗师.应用程序”的反向访问器冲突。提示:在“治疗师.评论”或“治疗师.appts”的定义中添加或更改相关的\u name参数。如果显式设置外键,为什么需要相关名称?您将如何将外键与相关名称一起使用?这上面还是有点模糊。非常感谢。解释清楚如果你明确地设置外键,为什么它需要一个相关的名称?您将如何将外键与相关名称一起使用?这上面还是有点模糊。非常感谢。请解释清楚
class Therapist(models.Model):
    name = models.CharField(max_length=255)
    reviews = models.ManyToManyField(Client, related_name='therapist_reviews', through="Review")
    appts = models.ManyToManyField(Client, related_name='therapist_appts', through="Appointment")
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    objects = UserManager()

    def __repr__(self):
        return "<Book object: {}>".format(self.title)