标签: django-hvad

迁移中找不到模型(apps.get_model引发LookupError)

我有以下迁移(为简单起见,删除了逻辑):

def migrate_existing_discounts(apps, _):
    ModelA = apps.get_model('myapp', 'ModelA')
    ModelB = apps.get_model('myapp', 'ModelB')

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0071_auto_20160531_1342'),
    ]

    operations = [
        migrations.RunPython(migrate_existing_discounts)
    ]
Run Code Online (Sandbox Code Playgroud)

运行时,以下异常会增加:

LookupError: App 'myapp' doesn't have a 'modelb' model.
Run Code Online (Sandbox Code Playgroud)

ModelA继承models.Model并成功加载.另一方面,ModelB继承自TranslatableModel,因此它会中断.我已经读过(2年前)迁移曾经在加载抽象类(票号#21786票证#21519)时遇到问题,而TranslatableModel就是其中之一.

我之前遇到过这个问题,最后我转而使用RunSQL进行迁移,但我想知道如何正确导入模型,因为必须有办法.

注意:包django-hvad没有迁移,因此不需要添加任何依赖项.

django django-migrations django-hvad

6
推荐指数
1
解决办法
585
查看次数

Django管理员字段验证返回错误不会在应用程序中引发异常

我有一个Django模型,它有一个图像的上传字段,我试图在存储之前验证图像字段以检查图像大小,并返回优雅的错误消息供用户纠正.

我试图使用以下代码,但它没有用

admin.py

class BonanzaAdmin(TranslatableAdmin):
    list_display = ['get_bonanza_name', 'user_profile', 'publish_date', 'created_by', 'created_at', 'all_translations']

    def clean_image(self):

        image = self.cleaned_data.get('image')
        if not image:
            raise forms.ValidationError("No image!")
        else:
            w, h = get_image_dimensions(image)
            if w != 1170:
                raise forms.ValidationError("The image is %i pixel wide. It's supposed to be 1170px" % w)
            if h != 500:
                raise forms.ValidationError("The image is %i pixel high. It's supposed to be 500px" % h)
        return image 


    def save_model(self, request, obj, form, change):
        if not change:
            obj.created_by = request.user
        obj.save() …
Run Code Online (Sandbox Code Playgroud)

django django-admin django-nani django-hvad

5
推荐指数
1
解决办法
6165
查看次数

django-hvad - 在保存模型实例时如何设置翻译的字段值?

背景:我使用django-hvad并拥有TranslatableModel.在其中TranslatedFields我有一个slug属性,应该title在保存模型时使用属性自动创建.

问题:TranslatedFields保存实例时很难设置其中一个的值.一个有效的解决方案是覆盖save_translations我的方法TranslatableModel如下.只有最后一行与原始行不同:

    @classmethod
    def save_translations(cls, instance, **kwargs):
        """
        The following is copied an pasted from the TranslatableModel class.
        """
        opts = cls._meta
        if hasattr(instance, opts.translations_cache):
            trans = getattr(instance, opts.translations_cache)
            if not trans.master_id:
                trans.master = instance
            # The following line is different from the original.
            trans.slug = defaultfilters.slugify(trans.title)
            trans.save()
Run Code Online (Sandbox Code Playgroud)

这个解决方案并不好用,因为它使用了复制和粘贴.有没有更好的方法来实现同样的目标?

django translation django-models django-hvad

5
推荐指数
1
解决办法
1779
查看次数

admin中的可翻译Manytomany字段会生成许多查询

我正在使用django-parler(django-hvad的衍生物)进行翻译.在管理员显示具有多种关系的Foreignkey字段时,django为每个字段运行一个查询:

change_clinic__english____django_suit

change_clinic__english____django_suit

因此,当有300个服务时,会有尽可能多的查询.

我认为get_queryset上的prefetch_related不适用于mantomany过滤器/列表,如果我错了,请纠正我:

def get_queryset(self, request):
    return super(DoctorAdmin, self).get_queryset(request).prefetch_related('translations', 'services__translations')
Run Code Online (Sandbox Code Playgroud)

对查询数量没有影响.启用缓存上parler(如笔者建议在这里)也于事无补,因为相同的查询不重复,但这些过滤器的每一项被称为在翻译项目查询(IDS每一次都是不同的).所以,我要找的是内部过滤器上的select_related/prefetch_related.如果您已经解决了这个问题,我也会同时审核您的应用程序.

python django django-admin django-hvad django-parler

4
推荐指数
1
解决办法
1247
查看次数

pip,PIL和Pillow

我运行以下命令将项目依赖项安装到virtualenv中novacek:

(novacek) $ pip install -r reqs.txt
Run Code Online (Sandbox Code Playgroud)

reqs.txt 看起来像这样:

Django==1.4.4
Pillow==1.7.8
South==0.7.6
django-bootstrap-toolkit==2.8.0
django-debug-toolbar==0.9.4
django-filebrowser==3.5.1
-e git+https://github.com/ir4y/django-flatblocks.git@4f8b2c86fe94e19dc7aa86b80a204918e2142aff#egg=django_flatblocks-dev
django-generic-flatblocks==0.9.1
django-grappelli==2.4.3
django-hvad==0.2
django-photologue==2.5
docutils==0.10
psycopg2==2.4.6
wsgiref==0.1.2
Run Code Online (Sandbox Code Playgroud)

如你所见,没有PIL包,只有Pillow,但在安装过程的最后我得到了这个:

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.3 (default, Feb 21 2013, 13:39:24)
              [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)]
--------------------------------------------------------------------
*** TKINTER support not available
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

这很奇怪.我也得到了枕头设置总结前面(与JPEG和zlib BTW启用的支持.如枕头实际上可以找到我的库).

如果我在安装后从virtualenv运行pip冻结,我得到这个: …

pip virtualenv python-imaging-library django-hvad

3
推荐指数
1
解决办法
1万
查看次数

Django如何让干草堆与django-hvad合作

我正在开发一个多语言应用程序,我需要实现一个搜索引擎,我选择了haystack.

这是我要索引的模型

class Post(TranslatableModel):
    category = models.ForeignKey(
        Category,
        related_name='posts',
        verbose_name=_(u'Categoría')
    )
    slug = AutoSlugField(
        populate_from='title'
    )
    featured_picture = ThumbnailerImageField(
        upload_to='blog/posts/featured-pictures',
        verbose_name=_(u'Imagen destacada'),
        help_text=_(u'Tamaño: 850 x 423px. Será recordada si no.')
    )
    box_bg = models.CharField(
        max_length=20,
        verbose_name=_(u'Color de fondo de la caja'),
        choices=SERVICE_BOX_COLORS,
        # Could be an image
        null=True, blank=True
    )
    box_image_bg = ThumbnailerImageField(
        upload_to='blog/posts/background-images',
        verbose_name=_(u'Imagen de fondo de la caja'),
        null=True, blank=True,
        help_text=_(u'Tamaño: 500 x 500px. Será recordada si no.')
    )

    translations = TranslatedFields(
        title=models.CharField(
            max_length=100,
            verbose_name=_(u'Título')
        ),
        content=RichTextField(
            verbose_name=_(u'Contenido') …
Run Code Online (Sandbox Code Playgroud)

python django django-haystack django-hvad

1
推荐指数
1
解决办法
268
查看次数