我试图从另一个python脚本访问我的Django(v1.10)应用程序数据库,并遇到一些麻烦.
这是我的文件和文件夹结构:
store
store
__init.py__
settings.py
urls.py
wsgi.py
store_app
__init.py__
admin.py
apps.py
models.py
...
db.sqlite3
manage.py
other_script.py
Run Code Online (Sandbox Code Playgroud)
根据Django的文档,我other_script.py看起来像这样:
import django
from django.conf import settings
settings.configure(DEBUG=True)
django.setup()
from store.store_app.models import MyModel
Run Code Online (Sandbox Code Playgroud)
但它会生成运行时错误:
RunTimeError: Model class store.store_app.models.MyModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
Run Code Online (Sandbox Code Playgroud)
我应该注意到我的INSTALLED_APPS列表包含store_app最后一个元素.
如果相反,我尝试传递这样的配置:
import django
from django.conf import settings
from store.store_app.apps import StoreAppConfig
settings.configure(StoreAppConfig, DEBUG=True)
django.setup()
from store.store_app.models import MyModel
Run Code Online (Sandbox Code Playgroud)
我明白了:
AttributeError: type object 'StoreAppConfig has …Run Code Online (Sandbox Code Playgroud) 我希望使用 Django REST 框架来“一起”创建许多模型对象——即在单个事务中。
目标是每个对象仅在事务(成功)结束时才可见。
我怎样才能做到这一点?
我正在使用python,unittest并希望编写一个测试,启动一些线程并等待它们完成.线程执行一个具有一些unittest断言的函数.如果任何断言失败,我希望测试失败.似乎并非如此.
编辑:最小的可运行示例(python3)
import unittest
import threading
class MyTests(unittest.TestCase):
def test_sample(self):
t = threading.Thread(target=lambda: self.fail())
t.start()
t.join()
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
输出是:
sh-4.3$ python main.py -v
test_sample (__main__.MyTests) ... Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib64/python2.7/threading.py", line 813, in __bootstrap_inner
self.run()
File "/usr/lib64/python2.7/threading.py", line 766, in run
self.__target(*self.__args, **self.__kwargs)
File "main.py", line 7, in <lambda>
t = threading.Thread(target=lambda: self.fail())
File "/usr/lib64/python2.7/unittest/case.py", line 450, in fail
raise self.failureException(msg)
AssertionError: None
ok
---------------------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud) 我无法使用Django Rest Framework为同一个对象定义不同的视图集.以下是基于DRF快速入门重现问题的最小示例.我使用的是python 3.5和最新的DRF.
教程/快速启动/ serializers.py
from django.contrib.auth.models import User
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email')
class UserMinimalSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('url', 'username')
Run Code Online (Sandbox Code Playgroud)
教程/快速启动/ views.py
from django.contrib.auth.models import User
from rest_framework import viewsets
from tutorial.quickstart.serializers import UserSerializer, UserMinimalSerializer
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
class UserMinimalViewSet(viewsets.ModelViewSet):
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserMinimalSerializer
Run Code Online (Sandbox Code Playgroud)
教程/ urls.py
from django.conf.urls import url, include
from rest_framework import routers
from …Run Code Online (Sandbox Code Playgroud) 我正在使用 Django REST 框架,并且在多对一MyNodel关系MyOtherModel中有一个相关:
models.ForeignKey(MyModel, related_name="my_other_models", blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
虽然blank=True, null=True,当我尝试发布MyModel没有my_other_models字段的JSON 时,我收到“此字段是必需的”错误。