我有两个文件
spike.py
class T1(object):
def foo(self, afd):
return "foo"
def get_foo(self):
return self.foo(1)
def bar():
return "bar"
Run Code Online (Sandbox Code Playgroud)
test_spike.py:
from unittest import TestCase
import unittest
from mock import patch, MagicMock
from spike import T1, bar
class TestStuff(TestCase):
@patch('spike.T1.foo', MagicMock(return_value='patched'))
def test_foo(self):
foo = T1().get_foo()
self.assertEqual('patched', foo)
@patch('spike.bar')
def test_bar(self, mock_obj):
mock_obj.return_value = 'patched'
bar = bar()
self.assertEqual('patched', bar)
if __name__ == "__main__":
unittest.main()
Run Code Online (Sandbox Code Playgroud)
当我运行时python test_spike.py,第一个测试用例会通过,但第二个测试用例会失败.然后我切换到使用nosetests test_spike.py,然后两个都失败了.
我不明白这是怎么发生的?这些案件应该通过所有.
我无法在文档或互联网上找到此信息.
最新的django-rest-framework,django 1.6.5
如何创建一个可以处理嵌套序列化器的ModelSerializer,其中嵌套模型是使用多重继承实现的?
例如
######## MODELS
class OtherModel(models.Model):
stuff = models.CharField(max_length=255)
class MyBaseModel(models.Model):
whaddup = models.CharField(max_length=255)
other_model = models.ForeignKey(OtherModel)
class ModelA(MyBaseModel):
attr_a = models.CharField(max_length=255)
class ModelB(MyBaseModel):
attr_b = models.CharField(max_length=255)
####### SERIALIZERS
class MyBaseModelSerializer(serializers.ModelSerializer):
class Meta:
model=MyBaseModel
class OtherModelSerializer(serializer.ModelSerializer):
mybasemodel_set = MyBaseModelSerializer(many=True)
class Meta:
model = OtherModel
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,但说明了我在这里要做的事情.
在OtherModelSerializer中,我希望mybasemodel_set根据我们拥有的内容序列化ModelA或ModelB的特定表示.
如果它很重要,我也使用django.model_utils和inheritencemanager,所以我可以检索一个查询集,其中每个实例已经是适当的子类的实例.
谢谢
我有一个工作的Django 1.8站点,我想使用django-rest-framework添加一个RESTful API。我想支持以CSV和JSON格式进行渲染,并且对如何做到这一点感到困惑。
在api/urls.py我有这个:
from django.conf.urls import url, include
from rest_framework import routers
from rest_framework.urlpatterns import format_suffix_patterns
import views
router = routers.DefaultRouter()
urlpatterns = [
url(r'^organisation/$', views.organisation),
]
urlpatterns = format_suffix_patterns(urlpatterns,
allowed=['json', 'csv'])
Run Code Online (Sandbox Code Playgroud)
我在api/views.py:
class JSONResponse(HttpResponse):
"""
An HttpResponse that renders its content into JSON.
"""
def __init__(self, data, **kwargs):
content = JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
@api_view(['GET'])
def organisation(request, format=None):
code = request.query_params.get('code', None)
print 'format', format
organisation = Organisation.objects.get(code=code)
serializer = OrgSerializer(organisation) …Run Code Online (Sandbox Code Playgroud) 我想删除
results = Model.objects.filter(condition - satisfied... etc.)
Run Code Online (Sandbox Code Playgroud)
然后我遍历查询集并在我浏览代码时删除每个对象:
for a in results:
### code ###
results.exclude(id=a.id)
Run Code Online (Sandbox Code Playgroud)
无论我如何排除,结果对象都不会改变。当我遍历查询集时,有没有办法“弹出”它们?