有人知道如何根据模型字段的比较来过滤管理员--F()表达式吗?
我们假设我们有以下模型:
class Transport(models.Model):
start_area = models.ForeignKey(Area, related_name='starting_transports')
finish_area = models.ForeignKey(Area, related_name='finishing_transports')
Run Code Online (Sandbox Code Playgroud)
现在,我想做的是制作管理过滤器,允许过滤区域内和跨区域对象,其中区域内的对象是start_area和finish_area相同而跨区域是其他对象.
我试图通过创建自定义FilterSpec来实现这一目标,但有两个问题:
第二个问题可能是通过定义自定义ChangeList类来解决的,但我认为无法解决第一个问题.
我还尝试通过重载查询集方法并将更多上下文发送到更改列表模板来直接在模型管理实例中"模拟"过滤器,其中过滤器本身将被硬编码并手动打印.不幸的是,似乎存在问题,Django取出了我的GET参数(用于过滤器链接),因为它们对于ModelAdmin实例是未知的,而是仅放置?e = 1,它应该发出一些错误信号.
提前谢谢任何人.
编辑:似乎功能,这将允许这个计划下一个Django版本,请参阅http://code.djangoproject.com/ticket/5833.仍然有人知道如何在Django 1.2中实现这一目标吗?
最近发布的推送通知服务非常酷,看起来比以前需要的轮询有了很大改进.
我想知道如何启用Drive上共享文件夹中的所有文件.我们正在开发云端硬盘监控工具,该工具会保留所有更改的列表并启用整个企业云端硬盘文件夹的报告.
我知道我可以在更改Feed中使用有关新对象的通知.不幸的是,你是不是能够检测到发生了什么变化,从变化的资源.
在观看文件资源时,您可以接收通知,说明有关文件的更改内容(父级,权限,元数据等).这很好,但似乎无法为Drive中的所有文件注册Push Notification处理程序.文档说你总是需要提供fileId.这意味着在我们的场景中对数百万个文件进行观察请求(不提及每次更新Push API频道).
您是否知道比使用更改通知更合适的方式并检测已手动更改的内容(这是相当多的API调用而且速度很慢).
如何在以下方案中完成基于类的默认值?我的意思是,我想继承类为"数字"设置默认值的方式不同:
class OrderDocumentBase(PdfPrintable):
number = models.PositiveIntegerField(default=self.create_number())
@classmethod
def create_number(cls):
raise NotImplementedError
class Invoice(OrderDocumentBase):
@classmethod
def create_number(cls):
return 1
class CreditAdvice(OrderDocumentBase):
@classmethod
def create_number(cls):
return 2
Run Code Online (Sandbox Code Playgroud)
我已经看过这个stackoverflow问题,但它没有解决同样的问题.我认为唯一可行的就是重载这样OrderDocumentBase的__init__方法:
def __init__(self, *args, **kwargs):
"""
Overload __init__ to enable dynamic set of default to number
"""
super(OrderDocumentBase, self).__init__(*args, **kwargs)
number_field = filter(lambda x: x.name == 'number', self._meta.fields)[0]
number = self.__class__.create_number()
number_field.default = number
Run Code Online (Sandbox Code Playgroud)
这是有效的,但只是部分和行为非常奇怪.在管理界面中,我可以看到仅在第二页或后一页刷新后才设置默认值.在第一次尝试,None正在设置:(
第二种可能性是重新定义每个类中的数字字段,但这似乎并不太漂亮.还有其他方法吗?
有人可以帮忙吗?