2012-02-24 98 views
5

我知道,一般的Django會創建一個名爲user_id,如果我只是做類似Django的:如何有多個外鍵,引用相同的表中的一個表

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_createduser_modifieduser_status

+0

的可能的複製[我怎麼能有兩個外鍵在Django相同的模型?(https://stackoverflow.com/questions/543377/how-can-i-have-two-foreign-keys-to -the-同一模型在Django的) – 2017-08-14 14:32:11

回答

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

你只需要定義單獨related_name,以免發生歧義從訪問用戶對象的訂單時。

+0

好了,你的'user'在這種情況下會是'user_status'?有沒有理由不爲第一個使用'related_name'? – hobbes3 2012-02-24 22:26:55

+0

第一個就是默認的相關名稱,並通過'user.order_set'被訪問 - 當然,人們也可以在此指定自定義相關的名稱爲好。 – alex 2012-02-24 22:31:16

+0

...是的,第一個是user_status - 我忽略了它在您的文章和更新我的回答 – alex 2012-02-24 22:33:36

相關問題