Database Django:如何让多个外键在一个表中引用同一个表
我知道,通常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
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
-当然,您也可以在此处指定自定义的相关名称……是的,第一个是用户状态-我在你的帖子中忽略了它,并更新了我的答案可能是重复的