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

hob*_*es3 5 database django

我知道通常Django会创建一个外键,user_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()
Run Code Online (Sandbox Code Playgroud)

但如果我需要的东西在三个不同的外键Order,所有的点User?这三个外键是user_created,user_modifieduser_status.

ale*_*lex 13

解决方案实际上是直截了当的:

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' )
Run Code Online (Sandbox Code Playgroud)

您只需定义单独的related_names以避免在从User对象访问Order时出现歧义.