我有一个mydf大约2500行的data.frame .这些行对应于colum 1中的69个对象类mydf$V1,我想计算每个对象类有多少行.我可以通过以下方式获得这些类的因子:
objectclasses = unique(factor(mydf$V1, exclude="1"));
Run Code Online (Sandbox Code Playgroud)
什么是计算每个对象类的行的简洁R方法?如果这是任何其他语言,我将遍历一个带循环的数组并保持计数,但我是R编程的新手,并且我正在尝试利用R的矢量化操作.
我正在使用django 1.9.6.我最近删除了我的迁移和跑migrate --run-syncdb和makemigrations my_app.今天我在我的一个模型中添加了一个新字段:
models.py:
value = models.PositiveSmallIntegerField(null=True)
Run Code Online (Sandbox Code Playgroud)
我尝试迁移更改,但未makemigrations检测到更改.它只是开发版本,因此我可以重新同步(我不必保留数据),但--run-syncdb再次运行也不会检测到它.
为什么不迁移?
我在尝试访问serializer.data之前遇到错误,然后返回Response(serializer.data, status=something):
尝试获取
<field>序列化程序字段的值时获取KeyError<serializer>.
这发生在所有字段上(因为事实证明我试图访问.data父节点而不是子节点,见下文)
类定义如下所示:
class BulkProductSerializer(serializers.ModelSerializer):
list_serializer_class = CustomProductListSerializer
user = serializers.CharField(source='fk_user.username', read_only=False)
class Meta:
model = Product
fields = (
'user',
'uuid',
'product_code',
...,
)
Run Code Online (Sandbox Code Playgroud)
CustomProductListSerializer是一个serializers.ListSerializer有一个重写的save()方法,允许它正确处理批量创建和更新.
以下是批量产品的示例视图ViewSet:
def partial_update(self, request):
serializer = self.get_serializer(data=request.data,
many=isinstance(request.data, list),
partial=True)
if not serializer.is_valid():
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializer.save()
pdb.set_trace()
return Response(serializer.data, status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)
试图访问serializer.data跟踪(或明显后面的行)会导致错误.这是完整的跟踪(tl; dr跳过下面我用调试器诊断的地方):
Traceback (most recent call last):
File "/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in …Run Code Online (Sandbox Code Playgroud) 我突然在以前工作的代码中遇到了一个奇怪的错误.我最近从1.9.4升级到Django 1.9.6.
在我的一个观点中,我有:
from django.contrib import messages
from django.utils.translation import ugettext_lazy as _
messages.success(request, str( _('A string with a ') +
'<a target="_blank" href="/preview/' + mymodel.hash + '">' +
_('link!') + '</a>.'), extra_tags="safehtml"
)
Run Code Online (Sandbox Code Playgroud)
这现在给出了TypeError最后一行的第二行:
Can't convert '__proxy__' object to str implicitly
Run Code Online (Sandbox Code Playgroud)
为什么?我该如何解决?
这可以通过将第二个调用包装到ugettext_lazy()in中来解决str()(即代码变为str( _('link!') ).这样做可以使视图呈现正常.现在我的问题是:为什么?整个复合字符串已经包含在内str(),正如我所说,这段代码与之前版本的django一起工作得很好.这是一个错误吗?
在DRF的DefaultRouter url路由器中,它需要一个{lookup}参数来将DELETE请求路由到a的destroy方法ModelViewSet(因此,您将请求将对象实例删除到端点{prefix}/{lookup}/).
这适用于删除单个实例,但我想将该功能扩展为在单个请求中删除多个实例.假设lookup调用参数并调用uuid模型Product.这是一个扩展版本destroy:
def destroy(self, request, uuid=None):
"""
Overridden method allows either url parameter of single UUID
(to delete a single instance), or multiple query parameters `uuids`
to delete multiple instances.
"""
if not uuid:
uuids = request.query_params.get('uuids', None)
if not uuids:
return Response(status=status.HTTP_404_NOT_FOUND)
if len(uuids) != Product.objects.filter(uuid__in=uuids).count():
return Response(status=status.HTTP_404_NOT_FOUND)
Product.objects.filter(uuid__in=uuids).delete()
else:
instance = self.get_object(uuid)
if not instance:
return Response(status=status.HTTP_404_NOT_FOUND)
instance.delete()
return Response(status=status.HTTP_204_NO_CONTENT) …Run Code Online (Sandbox Code Playgroud) 我正在尝试序列化一些对象,这些对象的数据存储在2个数据库中,由通用UUID链接.第二个数据库DB2存储个人数据,因此它作为隔离的微服务运行,以符合各种隐私法.我将数据作为解码的dicts列表(而不是模型实例的实际查询集)接收.如何调整ModelSerializer序列化这些数据?
这是与DB2交互以获取个人数据的最小示例:
# returns a list of dict objects, approx representing PersonalData.__dict__
# `custom_filter` is a wrapper for the Microservice API using `requests`
personal_data = Microservice.objects.custom_filter(uuid__in=uuids)
Run Code Online (Sandbox Code Playgroud)
这是一种序列化的最小方式,包括出生日期:
class PersonalDataSerializer(serializers.Serializer):
uuid = serializers.UUIDField() # common UUID in DB1 and DB2
dob = serializers.DateField() # personal, so can't be stored in DB1
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我需要将Person查询集和相关的序列personal_data化为一个JSON数组.
class PersonSerializer(serializers.ModelSerializer):
dob = serializers.SerializerMethodField()
# can't use RelatedField for `dob` because the relationship isn't
# codified in the RDBMS, due to it being a …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一些适当放置的教学工具提示,用户点击这些工具提示以了解网站界面的工作原理.每个工具提示都有一个"下一个"链接,通过修改类(因此,css)来切换上一个和下一个工具提示的可见性.
这是一些应该这样做的简化代码:
function displayTooltip(t){
//...some code to determine the tooltip IDs "next" and "previous"
document.getElementById(previous).className = "tooltip invisibleTooltip";
document.getElementById(next).className = "tooltip";
}
document.getElementById("tooltip-link1").addEventListener("click", displayTooltip(2));
Run Code Online (Sandbox Code Playgroud)
displayTooltip当我将此代码粘贴到控制台(或页面加载)时,立即调用(并正确切换类).如果我更换displayTooltip用alert(),当我点击,如预期触发.我究竟做错了什么?
我正在部署我第一次尝试使用django + gunicorn + nginx.
curl -XGET http://127.0.0.0.1:8000如果我运行开发服务器,工作正常).http://example.com/static/my_pic.png在我的浏览器中检索).(在shell :)
supervisorctl status my_app
my_app RUNNING pid 1002, uptime 0:29:51
Run Code Online (Sandbox Code Playgroud)
这是我用来启动它的样板脚本:
#!/bin/bash
#script variables
NAME="gunicorn_myapp" # Name of process
DJANGODIR=/webapps/www/my_project # Django project directory
SOCKFILE=/webapps/www/run/gunicorn.sock # communicte using this socket
USER=app_user # the user to run as
GROUP=webapps # the group to run as
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=my_project.settings # settings file
DJANGO_WSGI_MODULE=my_project.wsgi # WSGI module name
# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE …Run Code Online (Sandbox Code Playgroud) 我的DRF路由器指定了一个命名空间,以便我可以使用reverse我的URL:
urls.py:
router = DefaultRouter()
router.register('widget/', MyWidgetViewSet, base_name='widgets')
urlpatterns =+ [
url(r'/path/to/API/', include(router.urls, namespace='widget-api'),
]
Run Code Online (Sandbox Code Playgroud)
其中,升级到django 2时,会给出:
django.core.exceptions.ImproperlyConfigured:不支持在include()中指定名称空间而不提供app_name.在包含的模块中设置app_name属性,或者传递包含模式列表和app_name的2元组.
Django的2 现在要求 app_name如果namespace使用时指定kwarg include.什么是指定app_nameDRF url路由器构建url模式的正确方法?我不认为django 2 的文档是关于这个主题的最新文档.
如何为INSERTpq postgres 驱动程序的准备语句使用动态表名称?目前我有一个包含id SERIAL和values TEXT列的测试表,并且此语句失败:
stmt, err := db.Prepare("INSERT INTO $1(values) VALUES($2);")
if err != nil {
log.Fatal(err)
}
Run Code Online (Sandbox Code Playgroud)
这是失败的:
pq:“$1”处或附近的语法错误
如果我只能使用值的占位符而不是表名,有没有办法Sprintf在这里使用?表名包含string来自用户输入的内容,尽管我可以对其进行清理,但与让 Postgres 在准备好的语句上返回错误相比,它会稍微减慢插入速度。