2017-01-23 92 views
0

我試圖將'贊助'列添加到Django的用戶模型。事情是我想要這個列引用用戶名字段(它可以留空)。我的意思是,一個用戶可以將保薦許多其他(○無)用戶Django添加一個字段到用戶模型,它是指同一個表

事情是這樣的:

(Django的用戶模型表)

+--------+------------------+ 
|username| sponsor   | 
+--------+------------------+ 
| Tom | ...    | 
| John | Tom    | 
| Louis | Tom    | 
| Michael| Louis   | 
+--------+------------------+ 

我有以下型號

# models.py 
class Sponsor(models.Model): 
    user = models.OneToOneField(User, primary_key=True) 
    sponsor = models.ForeignKey(User, null=True, to_field='username', related_name='spn') 

我不知道我是否做得好。不過,我也做了以下內容,以便通過管理頁面添加一個贊助商:

# admin.py 
class SponsorInline(admin.TabularInline): 
    model = Sponsor 
    fk_name = 'sponsor' 

當我想在我的管理頁面中添加新的用戶,我收到三個滾動條添加一個贊助商,當然,這看起來不太合適。 Look like this

編輯

我加了屬性

extra = 1 

到我SponsorInLine類和管理頁面現在只顯示一行。但它似乎並沒有工作,我需要的一對多關係

有沒有一種方法來製作一個表單輸入贊助商的用戶名。什麼是實現所有這一切的最佳途徑?

+0

「我正在接收三個滾動條以添加贊助商」< - 可以編輯您的問題以澄清此問題嗎?添加截圖可能會有所幫助。 –

+0

@GrishaLevit好的,我剛剛添加了! – rvliscano

+0

您可以使用'extra'屬性指定空行數。試着在SponsorInline類中添加'extra = 1'。 – neverwalkaloner

回答

0

一個用戶可以有很多其他的(○無)用戶

目前,模型的贊助商或者由一個用戶可以有很多的用戶,或一個贊助商有一個用戶。

現在假設User是不是你的模型,你不得不在中間模型來構建處理關係的其他方式

class UserSponsor(models.Model): 
    user = models.OneToOneField(User) 
    sponsor = models.ForeignKey(Sponsor) 

這顯然會對你如何使用它的負面影響。

但是,我想知道您是否錯過了一個贊助商可以贊助多個用戶的可能性,在這種情況下,您可以在贊助商模型上將其設爲ManyToManyField

+0

這就是我需要實現的:用戶可以成爲許多其他用戶的贊助商。但一個用戶只能由一個用戶贊助 – rvliscano

相關問題