Django: как иметь несколько внешних ключей, ссылающихся на одну и ту же таблицу в одной таблице - PullRequest
5 голосов
/ 25 февраля 2012

Я знаю, что обычно 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()

но что если мне понадобятся три разных внешних ключа в Order, которые все указывают на User? Три внешних ключа будут user_created, user_modified и user_status.

1 Ответ

13 голосов
/ 25 февраля 2012

Решение на самом деле простое:

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' )

Вам просто нужно определить отдельные related_name s, чтобы избежать двусмысленности при доступе к ордеру из объекта User.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...