我有一个问题。
我有3个型号:
class Deal(models.Model):
name = models.CharField(max_length=80)
class Site(models.Model):
name = models.CharField(max_length=80)
deal = models.ForeignKey(Deal)
class Picture(models.Model):
title = models.CharField(max_length=80)
deal = models.ForeignKey(Deal)
site = models.ForeignKey(Site)我想使交易管理与网站和图片内联管理模式:
class SiteInline(admin.StackedInline):
model = Site
extra = 1
class PictureInline(admin.StackedInline):
model = Picture
extra = 1
class DealAdmin(admin.ModelAdmin):
inlines = [
SiteInline,
PictureInline,
]我想做的是,当我在图片管理中选择网站时,它只显示我属于我正在查看的当前交易的网站(如果我正在更新-而不是创建新的)。
我希望这在管理工作,我花了很多小时搜索网页,但找不到任何有用的东西,请帮助!
我试着这样做,但我不知道如何访问父模型实例来获取交易id:
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
if db_field.name == 'site':
kwargs['queryset'] = Site.objects.filter(deal__id=1)
return super(PictureInline, self).formfield_for_foreignkey(db_field, request=None, **kwargs)发布于 2014-04-28 19:18:27
在DTing的变体中,我看到了问题- self.instance.deal在编辑模式下设置,但在添加模式下未设置
我认为,你应该写
try:
self.fields['site'].queryset = Site.objects.filter(deal=self.instance.deal)
except:
self.fields['site'].queryset = Site.objects相反,
发布于 2013-08-19 13:33:10
Django: accessing the model instance from within ModelAdmin?
class PictureInlineForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(PictureInlineForm, self).__init__(*args, **kwargs)
self.fields['site'].queryset = Site.objects.filter(
deal=self.instance.deal)
class PictureInline(admin.ModelAdmin):
form = PictureInlineFormhttps://stackoverflow.com/questions/18304932
复制相似问题