小编Joh*_*ers的帖子

单元测试返回生成器对象的函数

标题几乎总结了一下:我试图使用assertEqual来测试一个返回生成器对象的函数,但结果是:

AssertionError:生成器对象genexpr>在0x2e70c80>!=(1,2,...)

除了迭代函数并为每个输出运行assertEqual之外,还有一种聪明的方法吗?

python

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

django-tables2中的非查询集数据排序

文档说:

如果表由模型支持,数据库将处理排序.如果不是这种情况,则使用Python cmp函数,并且在比较不同类型时使用以下机制作为回退:...

但是,这可能在一个表由模型的支持下,在自定义列?例如

class MyModel(models.Model):
    x = models.IntegerField()
    y = models.IntegerField()

    def z(self):
        return x+y

class MyTable(tables.Table):
    z = tables.Column()
    class Meta:
        model = MyModel
Run Code Online (Sandbox Code Playgroud)

当我尝试这样的事情时,列显示OK,但是当我点击列标题进行排序时,我收到此错误:

渲染时捕获FieldError:无法将关键字u'z'解析为字段.选择是:......

显然这是因为在数据库表中找不到z.

有没有解决的办法?

django django-tables2

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

更改表单集中表单的显示顺序

我正在显示一个modelformset,我希望表单通过其字段之一的内容进行排序。因此,我想对SomeModel.objects.filter(whatever).order_by('somefield')模板中的(模型)formset 使用等效项。

我怎样才能做到这一点?

请注意,can_order它并不能满足我的要求(它必须是自动的,不是用户指定的)。我也尝试过其他事情,例如dictsort过滤器,但是会产生不可预测的输出(即未按指定字段排序)。

我什至尝试过{% regroup formset by somefield as sorted_formset %},但是结果sorted_formset不能用作(重复)正常的形式集。

python django

6
推荐指数
3
解决办法
4137
查看次数

模板中表单外键的访问字段

我无法在模板的表单中显示字段的值。该值应该可用于模板,但它似乎没有。

这是情况:

模型.py:

class Member(models.Model):
    ...
    name = models.CharField(max_length=10, unique=True)
    description = models.CharField(max_length=50, blank=True)

class Pool(models.Model):
    ...
    members = models.ManyToManyField(Member, through='MemberPoolDates')

class MemberPoolDates(models.Model):
    member = models.ForeignKey(Member)
    pool = models.ForeignKey(Pool)
    date = models.DateField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

视图.py:

    pool = Pool.objects.get(id=pool_id)
    MemberFormSet = modelformset_factory(MemberPoolDates, form=MemberForm)
    memberformset = MemberFormSet(queryset=MemberPoolDates.objects.filter(
                                                                      pool=pool))
Run Code Online (Sandbox Code Playgroud)

模板:

<form action="" method="post">
{% csrf_token %}
<table>
{{ poolform }}
</table>
<h2>Pool entries:</h2>
{{ memberformset.management_form }}
{% for memberform in memberformset %}
    {{ memberform.id }}
    {{ memberform.member }} 
    {{ memberform.member.name }}
    {{ memberform.member.description }} …
Run Code Online (Sandbox Code Playgroud)

django

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

如何从父方法引用子类?

在下面的例子中,是否有一个神奇的词我可以代替<ChildClass>那个像超级的相反的作品?

class Parent(object):

    def __init__(self):
        print <ChildClass>.x

class someChild(Parent):
    x = 10
Run Code Online (Sandbox Code Playgroud)

这是一个愚蠢的例子,但它显示了我的意图.顺便说一下,使用someChild不起作用,因为有很多子类.

我能想到的唯一解决方案是在每个子类中都有一个构造函数,它调用Parent的构造函数并引用自身(甚至传递x),但我想避免在每个子元素中都有构造函数.

python

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

Django-tables2没有排序

我使用django-tables2显示数据库表.全部显示正常,但单击列标题不会按该列排序.标题是可点击的,但在它们的html中没有url文本,例如:

<div class="table-container">
<table class="paleblue"><thead><tr><th class="id orderable sortable"><a href="">ID</a>
</th><th class="orderable sortable system"><a href="">System</a></th> ...
Run Code Online (Sandbox Code Playgroud)

我检查了django-tables2模板源代码,它是这样的:

... <a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}"> ...
Run Code Online (Sandbox Code Playgroud)

哪个我不明白.

我只能通过在view.py中设置order_by来进行排序工作:

class ResultsTable(tables.Table):
    class Meta:
        model = Performance
        attrs = {'class': 'paleblue'}
        order_by_field = True

def result(request, system):
    results = Performance.objects.filter(system__name=system)
    table = ResultsTable(results, order_by=('<any column name from Performance>',))
    RequestConfig(request).configure(table)
    return render_to_response('result.html', {'table': table})
Run Code Online (Sandbox Code Playgroud)

但这显然只适用于一列,我想点击列来选择要排序的列.

文档中我的理解是,按列排序应该"开箱即用",这是正确的,还是我做错了什么?

django django-tables2

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

标签 统计

django ×4

python ×3

django-tables2 ×2