小编Cod*_*mon的帖子

Django objects.filter不是更新字段,而是objects.get

我有一个Django模型:

class QuestionAnswer(models.Model):
   question = models.ForeignKey(Question)
   marks = models.FloatField(null=True)
   graded = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

现在在命令行中我做:

>>> qa = QuestionAnswer.objects.filter(pk=12345)
>>> qa[0].graded 
0
>>> qa[0].graded = 1
>>> qa[0].save()
>>> qa = QuestionAnswer.objects.filter(pk=12345)
>>> qa.graded
0
Run Code Online (Sandbox Code Playgroud)

graded字段未更新.

但当我这样做时:

>>> qa = QuestionAnswer.objects.get(pk=12345)
>>> qa.graded 
0
>>> qa.graded = 1
>>> qa.save()
>>> qa = QuestionAnswer.objects.get(pk=12345)
>>> qa.graded
1
Run Code Online (Sandbox Code Playgroud)

为什么不objects.filter更新字段但objects.get有效?

python django orm

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

无法访问Django-Oscar中的产品价格?

试图访问产品的价格,使用文档.但是获得属性错误.

>>> from oscar.apps.partner import strategy, prices
>>> from oscar.apps.catalogue.models import *
>>> product = Product.objects.get(pk=1)
>>> info = strategy.fetch_for_product(product)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'module' object has no attribute 'fetch_for_product'
Run Code Online (Sandbox Code Playgroud)

要查看策略的所有属性,我会这样做

  >>> dir(strategy)
  >>> ['Base', 'D', 'Default', 'DeferredTax', 'FixedRateTax', 'NoTax', 'PurchaseInfo', 
    'Selector', 'StockRequired', 'Structured', 'UK', 'US', 'UseFirstStockRecord', 
'__builtins__', '__doc__', '__file__', '__name__',
 '__package__', 'availability', 'namedtuple', 'prices']
Run Code Online (Sandbox Code Playgroud)

所以fetch_for_product不属于策略属性.现在我如何获取特定产品的价格?

python django django-oscar

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

使用Query参数过滤基于类的视图Django中的对象?

我正在使用基于类的通用视图Listview来列出所有对象.

我的views.py:

class PostsList(ListView):
    model = Post
    template_name = "index.html"
Run Code Online (Sandbox Code Playgroud)

我的Urls.py:

urlpatterns = [
    url(r'^$',PostsList.as_view(), name = "home"),
] 
Run Code Online (Sandbox Code Playgroud)

这给了我所有帖子的清单.现在我想基于Model的某些字段来过滤/排序帖子Post,比方说price.我需要自己写这个吗?如果是,PostsLists我覆盖哪种类的方法?def get,def get_context

我看到Listview的get方法定义如下.在其中我可以**kwargs直接传递URL查询参数,或者我必须在我的类中覆盖以下方法.

def get(self, request, *args, **kwargs):
    ....
Run Code Online (Sandbox Code Playgroud)

python django

3
推荐指数
2
解决办法
6319
查看次数

单元测试未运行

我正在使用命令行中的参数运行单元测试。下面是我的测试代码。

import unittest
import sys
from toolbox.models import *
akit_id = sys.argv[1]

class TestQuizCase(unittest.TestCase):

    def testupdate_quiz(self):
        akit = AssignmentKit.objects.get(pk = akit_id)
        akit.update_score_grade()
        self.assertEqual(akit.marks, 50000)

if __name__ == "__main___":
    del sys.argv[1:]
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

现在从命令行我正在做:

>>> python test_quiz.py 2000
Run Code Online (Sandbox Code Playgroud)

什么都没有,因此没有进行测试。我尝试了日志记录,发现控件甚至没有进入测试功能。我缺少的是导致问题的 sys.argv 吗?

python testing command-line-arguments

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

创建测试数据库 Django

我在 settings.py 中定义了一个 mysql 数据库

DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME':'<name>',
            'USER':'<user>',
            'PASSWORD':'<password>'
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我需要为我的单元测试创​​建一个测试数据库。哪里需要提到测试数据库的设置,或者我根本不必提到它们?

当我这样做时进行测试:

python manage.py test my_app
Run Code Online (Sandbox Code Playgroud)

它说:

Creating test database for alias 'default'...
Skipping creation of NoticeTypes as notification app not found
E
======================================================================
ERROR: test_update_quiz (toolbox.tests.TestQuizCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/opt/2.0/site/toolbox/tests.py", line 20, in test_update_quiz
    akit = AssignmentKit.objects.get(pk = akit_id)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/manager.py", line 131, in get
    return self.get_query_set().get(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 366, in get
    % self.model._meta.object_name)
DoesNotExist: AssignmentKit …
Run Code Online (Sandbox Code Playgroud)

python django unit-testing

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