我想知道是否有可能(以及如果是这样,如何)将多个经理链接在一起以生成受两个经理影响的查询集.我将解释我正在研究的具体示例:
我有多个抽象模型类,用于为其他模型提供小的特定功能.其中两个模型是DeleteMixin和GlobalMixin.
DeleteMixin定义如下:
class DeleteMixin(models.Model):
deleted = models.BooleanField(default=False)
objects = DeleteManager()
class Meta:
abstract = True
def delete(self):
self.deleted = True
self.save()
Run Code Online (Sandbox Code Playgroud)
基本上它提供了伪删除(删除标志)而不是实际删除对象.
GlobalMixin定义如下:
class GlobalMixin(models.Model):
is_global = models.BooleanField(default=True)
objects = GlobalManager()
class Meta:
abstract = True
Run Code Online (Sandbox Code Playgroud)
它允许将任何对象定义为全局对象或私有对象(例如公共/私有博客帖子).
这两个都有自己的管理器,会影响返回的查询集.我的DeleteManager过滤查询集只返回已删除标志设置为False的结果,而GlobalManager过滤查询集只返回标记为全局的结果.以下是两者的声明:
class DeleteManager(models.Manager):
def get_query_set(self):
return super(DeleteManager, self).get_query_set().filter(deleted=False)
class GlobalManager(models.Manager):
def globals(self):
return self.get_query_set().filter(is_global=1)
Run Code Online (Sandbox Code Playgroud)
所需的功能是让模型扩展这两个抽象模型,并授予仅返回非删除和全局结果的能力.我在一个包含4个实例的模型上运行了一个测试用例:一个是全局的,未删除的,一个是全局的,已删除,一个是非全局的,未删除,一个是非全局的,已删除.如果我尝试获取结果集:SomeModel.objects.all(),我得到实例1和3(两个未删除的 - 很棒!).如果我尝试SomeModel.objects.globals(),我会得到一个错误,即DeleteManager没有全局变量(假设我的模型声明是这样的:SomeModel(DeleteMixin,GlobalMixin).如果我颠倒顺序,我不会得到错误,但它不会过滤掉已删除的错误).如果我更改GlobalMixin以将GlobalManager连接到全局而不是对象(因此新命令将是SomeModel.globals.globals()),我得到实例1和2(两个全局变量),而我的预期结果只是获取实例1(全局,未删除的).
我不确定是否有人遇到过与此类似的任何情况并且已经得出结果.无论是在我当前的想法中使其工作的方式还是提供我所追求的功能的重新工作都将非常感激.我知道这篇文章有点啰嗦.如果需要更多解释,我很乐意提供.
编辑:
我已经在下面发布了我用于此特定问题的最终解决方案.它基于Simon自定义QuerySetManager的链接.
我按照Atlas中的示例:使用ModalPopup Extender创建确认,在单击ModalPopup中的OkButton时进行回发(它使用ASP.NET Ajax Control Toolkit中的ModalPopupExtender),但正如我所看到的,系统ASP.NET AJAX中不再存在.WebForms.PostBackAction()(示例适用于Atlas).当我运行它时,在我创建PostBackAction的javascript行中出现"Microsoft JScript运行时错误:预期的对象"错误消息.如何在ASP.NET AJAX中使用它,或者,还有另一种方法可以做到这一点?谢谢
我已经看到这种模式在C&C++中使用了很多.
unsigned int flags = -1; // all bits are true
Run Code Online (Sandbox Code Playgroud)
这是一个很好的便携式方法吗?或正在使用0xffffffff或~0更好?
我只是学习SQLite,我无法正确编译命令.当我执行以下代码时:
this.command.CommandText = "INSERT INTO [StringData] VALUE (?,?)";
this.data = new SQLiteParameter();
this.byteIndex = new SQLiteParameter();
this.command.Parameters.Add(this.data);
this.command.Parameters.Add(this.byteIndex);
this.data.Value = data.Data;
this.byteIndex.Value = data.ByteIndex;
this.command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
我得到一个SQLite异常.在检查CommandText时,我发现无论我做什么都没有正确添加参数:INSERT INTO [StringData] VALUE (?,?)
我缺少什么想法?
谢谢
这意味着什么,我该如何解决它?
SELECT MySequence.CURRVAL FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
结果:
ORA-08002:此会话中尚未定义序列MySequence.CURRVAL
如果我们首先不知道变量名,我将如何在实例化的Object中列出所有公共变量?
场景
一个类可能有一个声明为的函数:
function addVar($name, $val) {
$this->$name = $val;
}
Run Code Online (Sandbox Code Playgroud)
我想要一个动态添加到对象实例的$ name列表.
我试图通过使用XmlDocument类并直接修改值来在安装时更改bindingRedirect元素.这是我的app.config看起来像:
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
...
</sectionGroup>
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyDll" publicKeyToken="31bfe856bd364e35"/>
<bindingRedirect oldVersion="0.7" newVersion="1.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
...
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用以下代码将1.0更改为2.0
private void SetRuntimeBinding(string path, string value)
{
XmlDocument xml = new XmlDocument();
xml.Load(Path.Combine(path, "MyApp.exe.config"));
XmlNode root = xml.DocumentElement;
if (root == null)
{
return;
}
XmlNode node = root.SelectSingleNode("/configuration/runtime/assemblyBinding/dependentAssembly/bindingRedirect/@newVersion");
if (node == null)
{
throw (new Exception("not found"));
}
node.Value = value;
xml.Save(Path.Combine(path, "MyApp.exe.config"));
}
Run Code Online (Sandbox Code Playgroud)
但是,它会引发"未找到"的异常.如果我将路径备份到/ configuration/runtime它就可以了.但是,一旦我添加了assemblyBinding,它就找不到该节点.可能这与xmlns有关吗?知道怎么修改这个吗?ConfigurationManager也无权访问此部分.
我正在构建一个带有Oracle后端的Intranet Web应用程序.由于对此讨论不重要的原因,Oracle DB将在另一台服务器上复制.我有理由相信我们将使用Oracle Basic Replication,而不是Advanced.
有人可以向我解释为什么围绕主键的大多数讨论都是这样的:
似乎没有人解释为什么复制的异常,我不明白为什么.
我试图删除表中最近的3,000个项目.该表有105,000条记录.
我正在尝试这个,但错误生成错误的语法.
delete tRealtyTrac where creation in( select top 103000 from tRealtyTrac order by creation)
Run Code Online (Sandbox Code Playgroud) 查看针对特定URL的请求的HTTP响应标头的最佳方法是什么?Telnet还是还有其他一些非常好的命令或工具?
c# ×2
asp.net-ajax ×1
binary ×1
bit-fields ×1
browser ×1
c ×1
c++ ×1
django ×1
dynamic ×1
guid ×1
http ×1
http-headers ×1
networking ×1
object ×1
oop ×1
oracle ×1
php ×1
postback ×1
primary-key ×1
python ×1
replication ×1
sequence ×1
sql ×1
sqlite ×1
xml ×1
xmldocument ×1