2017-08-01 94 views
0

所以我有以下模型:會議,騎手。多對多模型連接

基本上現在我想有其中騎手放置在每個會話所以基本上其米的成績:N連接(每個騎手在許多會話,每個會話有許多車手)。

現在我應該讓新模型叫做SessionResult嗎?並放置來自Session和Rider的兩個外鍵,並在該中間表中添加一個位置字段?或者你的建議是什麼?

這裏是模型:

class Rider(models.Model): 
    first_name = models.CharField(_('First name'), max_length=100, db_index=True) 
    last_name = models.CharField(_('Last name'), max_length=100, db_index=True) 
    number = models.IntegerField(_('Rider number')) 
    team = models.ForeignKey(Team) 
    country = CountryField() 
    birthday = models.DateField(_('Birthday')) 
    birth_place = models.CharField(_('Birth place'), max_length=100) 
    weight = models.IntegerField(_('Weight')) 
    height = models.IntegerField(_('Height')) 
    info = models.TextField(_('Info')) 

class Session(models.Model): 
    title = models.CharField(_('Title'), max_length=100, db_index=True) 
    event = models.ForeignKey(Event) 
    start_date = models.DateTimeField(_('Start time')) 
    end_date = models.DateTimeField(_('End time')) 

所以這樣的事情?

class SessionResult(models.Model): 
    rider = models.ForeignKey(Rider) 
    session = models.ForeignKey(Session) 
    position = models.IntegerField() 
    time = models.TimeField() 

回答

3

你的想法很棒,Django有一個很好的處理特定功能。 您可以使用帶有through一個ManyToManyField屬性

在你的情況下,可以像看:

class Session(models.Model): 
    ... other fields ... 
    riders = models.ManyToManyField(
     Rider, 
     through='SessionResult', 
    ) 

使用SessionResult

您可以將多對多場的騎士模型而不是會話,如果它使更適合你。獲取看看Django文檔我聯繫,它具有非常有用的細節。