2012-03-09 21 views
5

Sadece takımla ilgili oyuncuları belirli bir fikstürde göstermek istiyorum. Normalde yaptığım zaman, tüm oyuncularım veritabanından gösteriyor. İşte Şimdi benim models.pyformfield_for_foreignkey ve Satıriçi Yönetici

class InningsCard(models.Model): 
    fixture = models.ForeignKey(Fixture) 
    team = models.ForeignKey(Team) 
    runs = models.IntegerField(max_length=6, default=0) 
    wickets = models.IntegerField(max_length=6, default=0) 
    overs = models.FloatField(max_length=6, default=0.0) 

    def __unicode__(self): 
     return str(self.team) 

class BattingDetail(models.Model): 
    STATUS_CHOICES = (
     ('no', 'not out'), 
     ('bowled', 'bowled'), 
     ('caught', 'caught'), 
     ('lbw', 'lbw'), 
    ) 
    innings = models.ForeignKey(InningsCard) 
    player = models.ForeignKey(Player) 
    runs = models.IntegerField(max_length=5, default=0) 
    status = models.CharField(max_length=15, choices=STATUS_CHOICES, default='no') 

    def __unicode__(self): 
     return str(self.player) 

ve burada formfield_for_foreignkey dahil etmek benim admin.py, ama çalışmıyor.

class BattingInline(admin.TabularInline): 
    model = BattingDetail 
    extra = 0 

    def formfield_for_foreignkey(self, db_field, request=None, **kwargs): 

     if db_field.name == 'player': 
      kwargs = Player.objects.filter(team = request.team) 
     else: 
      pass 

     return super(BattingInline, self).formfield_for_foreignkey(db_field, request, **kwargs) 


class InningCardAdmin(admin.ModelAdmin): 
    inlines = [BattingInline] 

Nerede yanlış gideyim?

// fare Sen sorgu kümesi ile tüm kwargs değiştiriyoruz

cevap

7
  1. . kwargs bir sözlük olmalıdır ve aradığınız belirli anahtar 'QuerySet' dir: Neredeyse olumlu isteği aslında bir öznitelik team sahip gitmiyor ediyorum

    kwargs['queryset'] = Player.objects.filter(team=request.team) 
    
  2. . Burada görüntülenmeyen bazı kodlara kendiniz eklemediyseniz, mevcut "takıma" ulaşmak için başka bir yol bulmalısınız. Takım kimliğini request.path'dan ayırabilir ve örneğin arama için kullanabilirsiniz. Orada öylece pass için gidiyoruz

    Bir yan not olarak

, else fıkra gereksizdir.