2013-10-18 54 views
0

我在管理站點中的ModelAdmin對象的TabularInline內聯中重寫Formset時遇到問題。我知道你應該有一個與TabularInline對象關聯的模型,但我不確定如何在用於生成formset的表單對象上指定此模型。用下面的代碼,我得到「'AppAssetInline.formset'不從BaseModelFormSet繼承。」在TabularInline Django管理員表單中重寫formset

class AppAssetForm(forms.ModelForm): 

    model = App.assets.through 
    primary = forms.BooleanField() 
    uuid = forms.CharField() 

class AppAssetInline(admin.TabularInline): 
    model = App.assets.through 
    AssetFormset = formset_factory(AppAssetForm) 
    formset = AssetFormset 


class AppAdmin(admin.ModelAdmin): 

    inlines = [AppAssetInline,] 

回答

0

的回答我的問題沒有與我是如何構建我的方式做,但我寧願如何在我的模型加入域。我在我的模型結構如下:

class App(models.Model): 

    package = models.FileField(upload_to=settings.APP_PACKAGE_ROOT) 
    assets = models.ManyToManyField('AppAsset', blank=True, null=True) 
    download_count = models.IntegerField(default=0) 

class AppAsset(models.Model): 

    def __unicode__(self): 
     return self.asset_file.name 

    notes = models.CharField(max_length=255, null=True, blank=True) 
    type = models.CharField(max_length=255, null=True, blank=True) 
    asset_file = models.FileField(upload_to=settings.APP_PACKAGE_ROOT) 

我所做的是改變結構,使得AppAsset現在有資產在App外鍵。之後,我可以在AppAsset模型上使用TabularInline,而不會出現任何問題。這裏有最新的源文件:

https://github.com/ridecharge/spout/blob/master/Spout/AppDistribution/models.py https://github.com/ridecharge/spout/blob/master/Spout/AppDistribution/admin.py

0

您應該使用的django.forms.models.inlineformset_factory代替formset_factory