概述
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)
现在,这是我的admin.py包含formfield_for_foreignkey,但它不起作用.
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]
哪里可能出错?
//老鼠
kwargs['queryset'] = Player.objects.filter(team=request.team)
>我几乎是积极的请求,实际上并没有属性团队.除非你自己在这里没有显示的代码中添加它,否则你需要找到另一种方法来获得当前的“团队”.例如,您可以从request.path中解析出团队ID,并将其用于查找.
作为旁注,如果您要通过那里,则不需要else子句.
总结
以上是编程之家为你收集整理的django – formfield_for_foreignkey和内联管理员全部内容,希望文章能够帮你解决django – formfield_for_foreignkey和内联管理员所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧