2015-05-19 29 views
1

假設我有以下型號(保持簡單):限制內聯(Django的> 1.7)

models.py: 

class Athlete(models.Model): 
    name = models.CharField() 

class Judge(models.Model): 
    name = models.Charfield() 

現在我想每個法官得分的運動員:

class Score(models.Model): 
    athlete = models.ForeignKey(Athlete) 
    judge = models.ForeignKey(Judge) 
    score = models.SmallIntegerField() 

到目前爲止,我的admin.py:

class ScoreInlineAdmin(admin.TabularInline): 
    model = Score 
    fields = ('judge', 'score',) 

class AthleteAdmin(ModelAdmin): 
    fields = ('name') 
    inlines = (ScoreInlineAdmin,) 

admin.site.register(Athlete, AthleteAdmin) 

的成績應該是在Django的管理,後臺編輯。這是我的問題。 如何在我的數據庫中爲每個「評委」獲得ScoreInlines?我不喜歡有ChoiceFields,也不需要添加更多來自Inline的評委。

換句話說:我如何獲得獨特的「內聯」?有什麼辦法限制它在查詢集上?

回答

0

可以使用unique_together選項,以確保每名法官分數運動員一次最多:

class Score(models.Model): 
    athlete = models.ForeignKey(Athlete) 
    judge = models.ForeignKey(Judge) 
    score = models.SmallIntegerField() 

    class Meta: 
     unique_together = (
      ('athlete', 'judge'), 
     ) 

然而,這並不能幫助你的問題,這是創建一個在線的用戶接口部分Django管理員中的每個裁判。

+0

不錯。這可以避免從數據庫端重複。 – MichelB