如何使用model_mommy模拟从TimeStampedModel继承的模型的已创建字段?

时间:2018-03-15 18:28:08

标签: python django unit-testing model-mommy

我正在尝试测试日期过滤器,但无法使用mommy.make()设置创建日期。当我用模型妈妈制作对象时,创建的字段被设置为创建对象的时间而不是我传入的内容与mommy.make()

def test_mommy(self):
    today = arrow.now()
    yesterday = today.replace(days=-1)

    mommy.make('Model', created=today.naive)
    mommy.make('Model', created=yesterday.naive)

    model_1_created = Model.objects.all()[0].created
    model_2_created = Model.objects.all()[1].created

    self.assertNotEqual(model_1_created.strftime('%Y-%m-%d'), model_2_created.strftime('%Y-%m-%d'))

此测试因Assertion Error:

而失败
AssertionError: '2018-03-15' == '2018-03-15'

我可能误解了model_mommy如何创建这些对象。但我认为这应该创建它并正确设置创建的日期。虽然看起来默认的TimeStampedObject行为正在接管。

1 个答案:

答案 0 :(得分:0)

我可以在创建对象后保存由日期创建的文件。我认为这也可以通过覆盖TimeStampedModel上的save方法来实现。但这似乎是更简单的解决方案。

<form method="POST" class="p2 mb3" action-xhr="'.$st.'admin/zaloguj/" target="_top">
<label class="pl2">Email</label>
<input type="text" value="" name="login" id="ip1" class="travel-input inline-block relative block border p0 m0 mb1 mt1" placeholder="" required>
<label class="pl2">Hasło</label>
<input type="text" value="" name="haslo" id="ip1" class="travel-input inline-block relative block border p0 m0 mb1 mt1 pw" placeholder="" autocomplete="off" required>
<input type="submit"
    value="Zaloguj!"
    class="ampstart-btn caps">

<div submit-success>
<template type="amp-mustache">
<p class="center color-green">Logowanie udane. <a href="'.$st.'"><br />Przejdź na stronę główną!</a></p>
</template>
</div>
<div submit-error>
<template type="amp-mustache">
<p class="center">Logowanie nieudane!</p>
</template>
</div>
</form>