我可以将django图像裁剪(ImageCroppingMixin)也用于django管理列表行视图吗?

我可以将django图像裁剪(ImageCroppingMixin)也用于django管理列表行视图吗?,django,admin,inline,Django,Admin,Inline,我在Djano Admin中有一个工作映像CroppingMixin视图 因此,我可以调整裁剪区域并保存图像及其裁剪设置 但是,当我查看整个“引用”时,我也希望能够以这种方式编辑图片(所有图片都显示为admin.tablerinline视图) 我一直在获取相应图片的列表行视图中的纯文本字段 我的admin.py代码: class ReferentieFotoAdmin(ImageCroppingMixin, admin.ModelAdmin): list_display = ('foto

我在Djano Admin中有一个工作映像CroppingMixin视图 因此,我可以调整裁剪区域并保存图像及其裁剪设置

但是,当我查看整个“引用”时,我也希望能够以这种方式编辑图片(所有图片都显示为admin.tablerinline视图)

我一直在获取相应图片的列表行视图中的纯文本字段

我的admin.py代码:

class ReferentieFotoAdmin(ImageCroppingMixin, admin.ModelAdmin):
    list_display = ('foto', 'referentie', 'volgnummer', 'op_frontpage', )
    ordering =("-volgnummer",)


class ReferentieFotoInline(admin.TabularInline):
    model = ReferentieFoto


class ReferentieDetailInline(admin.TabularInline):
    model = ReferentieDetail

class ReferentieAdmin(admin.ModelAdmin):
    inlines = [
               ReferentieDetailInline, 
               ReferentieFotoInline,
               ]
    ordering = ("volgnummer",)
    list_filter = ['datum', 'volgnummer']


class TipAdmin(admin.ModelAdmin):
    ordering = ("volgnummer",)

class SiteInfoAdmin(admin.ModelAdmin):
    def has_add_permission(self, request):
        return False


class KlantAdminSite(AdminSite):
    klantInfo = SiteInfo.objects.get(id=1)
    site_header = "Websitebeheer voor: " + klantInfo.website_naam + " | " + klantInfo.bedrijfsslogan
    index_title = "Sitebeheer - Home" 


adminCappaert = KlantAdminSite('CappaertAdmin')


django.contrib.admin.site = adminCappaert

autodiscover()

adminCappaert.register(Referentie, ReferentieAdmin)
adminCappaert.register(ReferentieFoto, ReferentieFotoAdmin)
adminCappaert.register(SiteInfo, SiteInfoAdmin)
adminCappaert.register(DeKlantSpreekt)
adminCappaert.register(Tip, TipAdmin)
adminCappaert.register(ContactBericht)

models.py


有没有想过如何在内联类视图中实现同样的功能

已经谢谢你了

在您的admin.py中

class ImageInline(admin.TabularInline):
        model = ImageModel
        extra = 0

        def formfield_for_dbfield(self, db_field, **kwargs):
            crop_fields = getattr(self.model, 'crop_fields', {})
            if db_field.name in crop_fields:
                kwargs['widget'] = image_cropping.ImageCropWidget

            return super(ImageInline, self).formfield_for_dbfield(db_field, **kwargs)

此解决方案与Django 1.8.x配合使用非常好

解决方案:类ReferenceDetailInline(ImageCroppingMixin,admin.TableLine):model=ReferenceDetail
class ImageInline(admin.TabularInline):
        model = ImageModel
        extra = 0

        def formfield_for_dbfield(self, db_field, **kwargs):
            crop_fields = getattr(self.model, 'crop_fields', {})
            if db_field.name in crop_fields:
                kwargs['widget'] = image_cropping.ImageCropWidget

            return super(ImageInline, self).formfield_for_dbfield(db_field, **kwargs)