Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Database Django:如何让多个外键在一个表中引用同一个表_Database_Django - Fatal编程技术网

Database Django:如何让多个外键在一个表中引用同一个表

Database Django:如何让多个外键在一个表中引用同一个表,database,django,Database,Django,我知道,通常Django会创建一个名为user\u id的外键,如果我简单地执行以下操作 from django.db import models class Order(models.Model): user = models.ForeignKey(User) comments = models.CharField(max_length=400) date_created = models.DateTimeField('created date') class Us

我知道,通常Django会创建一个名为
user\u id
的外键,如果我简单地执行以下操作

from django.db import models

class Order(models.Model):
    user = models.ForeignKey(User)
    comments = models.CharField(max_length=400)
    date_created = models.DateTimeField('created date')

class User(models.Model):
    name = models.CharField(max_length=200)
    age = models.IntegerField()

但是如果我在
顺序中需要三个不同的外键,它们都指向
用户
,该怎么办?这三个外键分别是
user\u created
user\u modified
,和
user\u status
,解决方案实际上是直截了当的:

class Order(models.Model):
    user_status = models.ForeignKey(User, related_name='orders_status')
    user_created = models.ForeignKey(User, related_name='orders_created')
    user_modified = models.ForeignKey(User, related_name='orders_modified')

您只需定义单独的
相关的\u名称
s,以避免在从用户对象访问订单时出现歧义。

Ok,那么在这种情况下,您的
用户
将是
用户状态
?您为什么不使用
related\u name
作为第一个名称?第一个名称采用默认的相关名称,通过
user访问。order\u set
-当然,您也可以在此处指定自定义的相关名称……是的,第一个是用户状态-我在你的帖子中忽略了它,并更新了我的答案可能是重复的