我正在寻找向Django管理员更改页面添加自定义操作的方法.我不是在寻找可以添加到概述中下拉框中的操作.
我的Django应用程序中的一个模型包含有关文档的信息,这些文档在前端自动编译为PDF文件.我想让管理员直接从更改页面快速呈现PDF,以便快速检查结果.
我已经玩过覆盖change_form.html/submit_line.html,添加按钮绝对没问题.但我想知道如何以干净的方式扩展管理模块,以便它包含我的自定义操作.
我有一个std::vector<Foo>
地方Foo
是含有类Foo( Foo&& ) noexcept
.
向容器添加对象可以完美地工作,但是使用std::vector::erase( iterator )
它不会使用它们,GCC 4.7会尝试调用我删除的赋值运算符.确切的错误消息是:
错误:使用已删除的函数'Foobar&Foobar :: operator =(const Foobar&)
编辑:当然std::vector
调用赋值运算符,而不是复制构造函数(您也可以在错误消息中看到).对不起,在说明中修正了它.
以下是请求的示例源代码:
#include <vector>
class Foo {
public:
Foo() {}
Foo( Foo&& other ) noexcept {}
Foo( const Foo& ) = delete;
Foo& operator=( const Foo& ) = delete;
};
int main() {
std::vector<Foo> v;
v.push_back( Foo{} );
v.erase( v.begin() );
}
Run Code Online (Sandbox Code Playgroud) 拥有以下代码
#include <memory>
int main() {
std::shared_ptr<int> ptr0( new int );
std::shared_ptr<int> ptr1( new int );
bool result = ptr0 < ptr1;
}
Run Code Online (Sandbox Code Playgroud)
使用clang编译时产生以下错误(版本3.1,LLVM 3.1,Debian GNU/Linux Sid)
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/shared_ptr.h:364:14: error: no matching function for call to object of type 'std::less<_CT>'
return std::less<_CT>()(__a.get(), __b.get());
^~~~~~~~~~~~~~~~
foo.cpp:9:21: note: in instantiation of function template specialization 'std::operator<<int, int>' requested here
bool result = ptr0 < ptr1;
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/stl_function.h:236:7: note: candidate function not viable: no known conversion from 'int *' to 'int *&&&' for
1st argument; …
Run Code Online (Sandbox Code Playgroud) class X {
public:
typedef std::list<int> Container;
// (1)
const Container& GetElements() const;
// (2)
Container::iterator ElementBegin();
Container::iterator ElementEnd();
// (3)
CustomIterator GetElementIterator();
private:
Container m_container;
};
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种一致且干净的方法来为封装容器提供迭代器给调用者.我想出了上面源代码中标记的三个想法.
Container
引用是const,所以您只能使用const_iterator
.返回引用非const是不好的,因为容器本身可以被修改(例如clear()
).size()
方法(比如GetElementCount()
).iterator::distance()
可以使用,但对于某些容器(其中operator++
/ --
被重复调用以计算距离)可能效率低下.next()
.仍然需要自己的size()
方法.我强烈打赌有更好的解决方案,所以如果你知道的话,我会很高兴见到它们.
我目前正在尝试让 Qt 与我现有的程序一起工作。
我正在使用 SFML 创建 OpenGL 渲染上下文并创建窗口。然而,到目前为止我尝试过的事情总是通过 Qt 创建一个单独的窗口,而不是仅仅渲染到现有的上下文中。
有什么方法可以强制 Qt 渲染到已经存在的 OpenGL 上下文吗?
我正在使用Django REST Framework来建模使用大量模型关系的REST API.
使用AngularJS和Restangular在前端级别解决这些关系的简单方法是什么?
这就是我的模型的一部分:
class Country( Model ):
name = CharField( max_length = 256 )
class City( Model ):
name = CharField( max_length = 256 )
postal_code = CharField( max_length = 16 )
country = ForeignKey( "Country" )
class Customer( Model ):
first_name = CharField( max_length = 256 )
last_name = CharField( max_length = 256 )
city = ForeignKey( "City" )
Run Code Online (Sandbox Code Playgroud)
以下JavaScript代码显示了我如何加载数据:(我实际上使用了返回的promises all()
,但是$object
为了解释这个而更短)
$scope.countries = [];
$scope.cities = [];
$scope.customers = [];
Restangular.all( …
Run Code Online (Sandbox Code Playgroud) class SomeClass {
public:
void Render() const;
private:
mutable Cache m_some_cache;
};
Run Code Online (Sandbox Code Playgroud)
上面的类是否正确?我何时可以安全地说"此操作不会更改实例的内部状态"?
在上面的例子中,SomeClass是在屏幕上呈现内容的东西.它使用缓存(例如OpenGL缓冲区对象)来允许更快地处理进一步的调用.所以内部改变的唯一事情就是缓存对象.我问自己缓存是否已经属于渲染器的内部状态.
这个例子非常小,但是在我的实际应用程序中,这是一个有很多类的道路,即涉及很多Render()调用,而且大多数只进行缓存.但是有些人还通过资源加载器加载资源 - 这里的假设是正确的,即使查询资源管理器加载资源,方法也可能是const吗?
我想知道如何在 RESTful API 中建立事务安全性,其中一切都围绕单个实体构建。
数据库模型:
用户在浏览器中执行的步骤:
提出的要求:
PATCH
/PUT
发票数据/订单号。POST
物品。DELETE
物品。PATCH
/PUT
项。如果在上述任何请求之后发生错误,进一步的调用可能会破坏数据完整性。此外,必须撤销先前的请求。例如,如果删除项目失败,则必须重新执行步骤 1 和 2,以使整个发票与以前一样。
另一个可能出现的问题是浏览器崩溃、互联网连接中断、服务器故障或其他任何问题。
如何确保在某种事务中执行某些操作以维护数据完整性和安全性?