小编Cra*_*oli的帖子

从不同的基本模型Django加入多个查询集

我目前有两种不同的型号.

class Journal(models.Model):
    date = models.DateField()
    from_account = models.ForeignKey(Account,related_name='transferred_from')
    to_account = models.ForeignKey(Account,related_name='transferred_to')
    amount = models.DecimalField(max_digits=8, decimal_places=2)
    memo = models.CharField(max_length=100,null=True,blank=True)

class Ledger(models.Model):
    date = models.DateField()
    bank_account = models.ForeignKey(EquityAccount,related_name='paid_from')
    account = models.ForeignKey(Account)
    amount = models.DecimalField(max_digits=8, decimal_places=2)
    name = models.ForeignKey(Party)
    memo = models.CharField(max_length=100,null=True,blank=True)
Run Code Online (Sandbox Code Playgroud)

我在视图中创建一个报告并收到以下错误:合并'ValuesQuerySet'类在每种情况下必须包含相同的值.

我想要做的只是拉出常见的字段,以便我可以连接它们两个例如

def report(request):

    ledger = GeneralLedger.objects.values('account').annotate(total=Sum('amount'))
    journal = Journal.objects.values('from_account').annotate(total=Sum('amount'))
    report = ledger & journal
...
Run Code Online (Sandbox Code Playgroud)

如果我试着让它们完全相同来测试例如

def report(request):

    ledger = GeneralLedger.objects.values('memo').annotate(total=Sum('amount'))
    journal = Journal.objects.values('memo').annotate(total=Sum('amount'))
    report = ledger & journal
...
Run Code Online (Sandbox Code Playgroud)

我收到此错误:无法在两个不同的基本模型上组合查询.

有谁知道如何实现这一目标?

django join concatenation django-queryset

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

带有S3 URL Heroku的Django Compressor

我目前正在使用django压缩器和django存储来运行s3的静态媒体.我的文件如下:

根据文档我的存储空间是:

from django.core.files.storage import get_storage_class
from storages.backends.s3boto import S3BotoStorage

class CachedS3BotoStorage(S3BotoStorage):
    """
    S3 storage backend that saves the files locally, too.
    """
    def __init__(self, *args, **kwargs):
        super(CachedS3BotoStorage, self).__init__(*args, **kwargs)
        self.local_storage = get_storage_class(
            "compressor.storage.CompressorFileStorage")()

    def save(self, name, content):
        name = super(CachedS3BotoStorage, self).save(name, content)
        self.local_storage._save(name, content)
        return name
Run Code Online (Sandbox Code Playgroud)

我的设置是:

# S3 Storage Section
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
# AWS_S3_SECURE_URLS = False #turns off https for static files (necessary)

# Used …
Run Code Online (Sandbox Code Playgroud)

django django-storage django-compressor

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

当Debug为False时,Admin中的Foreignkey链接导致AttributeError

我在models.py文件中使用了以下代码:

创建指向foreignkey的超链接

class ModelAdminWithForeignKeyLinksMetaclass(MediaDefiningClass): 

    def __getattr__(cls, name):

        def foreign_key_link(instance, field):
            target = getattr(instance, field)
            return u'<a href="../../%s/%s/%s">%s</a>' % (
                target._meta.app_label, target._meta.module_name, target.id, unicode(target))

        if name[:8] == 'link_to_':
            method = partial(foreign_key_link, field=name[8:])
            method.__name__ = name[8:]
            method.allow_tags = True
            setattr(cls, name, method)
            return getattr(cls, name)
        raise AttributeError
Run Code Online (Sandbox Code Playgroud)

在admin.py list_display中,我已将link_to添加到我想要外键链接的每个字段的开头.这非常有效,但是当我关闭调试时,我得到一个属性错误.有什么建议?

python django foreign-keys django-admin

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

自定义Django管理员更改表单外键以包括查看记录

在django管理员更改表单中选择外键时,我正在尝试添加一个href,可以查看添加记录的加号旁边的记录.

我试图让href渲染的是我将管理员def渲染复制到我自己的自定义窗口小部件文件中并将其添加到子类中并将其子类化:

widgets.py

class RelatedFieldWidgetWrapperLink(RelatedFieldWidgetWrapper):

    def render(self, name, value, *args, **kwargs):
        rel_to = self.rel.to
        info = (rel_to._meta.app_label, rel_to._meta.object_name.lower())
        try:
            related_url = reverse('admin:%s_%s_add' % info, current_app=self.admin_site.name)
        except NoReverseMatch:
            info = (self.admin_site.root_path, rel_to._meta.app_label, rel_to._meta.object_name.lower())
            related_url = '%s%s/%s/add/' % info
        self.widget.choices = self.choices
        output = [self.widget.render(name, value, *args, **kwargs)]
        if self.can_add_related:
            # TODO: "id_" is hard-coded here. This should instead use the correct
            # API to determine the ID dynamically.
            output.append(u'<a href="%s" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> ' % \
                (related_url, name))
            output.append(u'<img src="%simg/admin/icon_addlink.gif" …
Run Code Online (Sandbox Code Playgroud)

django django-admin django-widget

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

主管 Django Gunicorn Gevent 内存使用

我正在使用主管 3.0a8-1.1 在 Ubuntu 12.04 上运行 Django 1.4 站点,并且遇到了 gunicorn 0.17.2 和 gevent 0.13.8 的奇怪问题。

Supervisor 的内存使用量不断增加,直到服务器没有响应。

有 5 个站点具有以下主管配置:

command=/app/virtualenv/bin/newrelic-admin run-program /app/virtualenv/bin/python /app/manage.py run_gunicorn -c gunicorn_conf.py -k gevent
directory=/app
autostart=true
autorestart=true
stopsignal=KILL
killasgroup=true
environment=NEW_RELIC_CONFIG_FILE='/app/newrelic.ini'
Run Code Online (Sandbox Code Playgroud)

以及以下 gunicorn 配置:

workers = 4
bind = '0.0.0.0:(Site Port Number)'
Run Code Online (Sandbox Code Playgroud)

这些都是通过 NGINX 反向代理的。

我在一个大型 EC2 实例上运行这些实例,它有 2 个内核和 7.3GB 的 RAM,这应该比我需要的多。

有没有其他人遇到过这个问题?

django ubuntu gevent supervisord gunicorn

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