我目前有一组看起来类似于这个人为代码的模型:
class Pizza(models.Model):
price = models.FloatField()
topping = models.ManyToManyField(RouteGate, through="PizzaToppings")
class Topping(models.Model):
name = models.CharField(max_length=50)
class PizzaToppings(models.Model):
class Meta:
ordering=["order_to_add_topping"]
pizza = models.ForeignKey(Pizza)
topping = models.ForeignKey(Topping)
order_to_add_topping = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我尝试按照PizzaToppings ManyToMany额外字段表中指定的顺序访问披萨的浇头时会发生什么.假设披萨有奶酪和火腿,PizzaToppings数据中的order_to_add_topping分别设置为0和1:
>>> pizza = Pizza.objects.get(pk=490)
>>> pizza.toppings.all()[0].name
'Ham'
Run Code Online (Sandbox Code Playgroud)
应该说'奶酪'.我原本以为RelationManager会尊重ordering
Meta类字段,但它似乎没有.所以我想不应该使用添加到比萨饼中的第一个顶部的名称pizza.toppings.all()[0].name
.
应该如何访问?我的模型查询有问题,还是我的模型设置如何?
我有一套Selenium测试,我在Selenium IDE中创建并移植到Java.在几个测试中,我使用verifyTextPresent
命令的Java等价物来确认页面上的一些文本(verifyTrue(selenium.isTextPresent())
).
从IDE运行测试时,我在页面上的文本中发现了拼写错误,但是在通过Selenium RC/TestNG运行测试时未捕获到错误.这是我的代码示例和导致问题的文本(拼写错误以粗体显示):
文本:
请更正下面指出的错误.
您需要添加一个至少一个约束.
IDE:
verifyTextPresent | Please correct the errors indicated below.
verifyTextPresent | You need to add at least one restriction.
Run Code Online (Sandbox Code Playgroud)
Java的:
verifyTrue(selenium.isTextPresent("Please correct the errors indicated below."));
verifyTrue(selenium.isTextPresent("You need to add at least one restriction."));
Run Code Online (Sandbox Code Playgroud)
由于测试的两个版本都有正确的文本,为什么Selenium RC版本没有捕获错误?有没有其他人有这个问题?
android允许我发起创建新联系人的意图.我可以将额外内容添加到预填充新联系人字段的意图中.
Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.NAME, "Foo Bar");
intent.putExtra(ContactsContract.Intents.Insert.PHONE, "(408) 555-1212");
intent.putExtra(ContactsContract.Intents.Insert.EMAIL, "foo.bar@foobar.com");
startActivityForResult(intent, INSERT_CONTACT_REQUEST);
Run Code Online (Sandbox Code Playgroud)
这工作,但我不知道如何处理给定字段的多种类型,比如电话号码.在意图中,我可以添加一个额外的电话号码,我可以增加一个电话号码类型,但我如何额外增加一个额外的电话号码,具有不同的(或可能是相同的)类型?
有没有办法使用ruby电子表格gem来生成一个包含文本包装的单元格的电子表格?(如果没有,还有其他方法吗?)
谢谢, - 保罗
ps为了回应两个很好的建议,遗憾的是这对我不起作用,我应该注意:1)我目前无法将我的ruby应用程序转换为JRuby.2)我正在开发Linux,而不是Windows.
我想知道是否有一种干净的方式导入vcard作为Android联系人.我有一个vcard解析器,但映射每个可能的vcard字段和字段类型将是一个痛苦的,容易出错的练习.有没有更好的办法?
一个Android联系人看起来像一个vcard,所以我怀疑他们内部使用vcards.但是,没有公共API.
我不确定我是否知道如何提出这个问题.在实现编译器时,我想允许客户端指定,例如,在元组上折叠.我提供了一种方法来curry和uncurry一个函数,但这只是因为我在Ocaml中编写了一个二元运算符并将其折叠在术语和类型表示上.用户无法编写此功能.
在宏处理器中,用户可以编写此函数,因为元组是列表.
对于curried函数,用户可以轻松编写变换器,因为该术语在目标语言和术语的Ocaml表示以及键入时都是二进制的.
但他们不能为元组做这件事.这是另一个例子:用户可以轻松定义串行功能组合运算符.但用户无法定义并行组合:二进制版本:
f1: D1 -> C1, f2: D2-> C2 --> f1 * f2: D1 * D2 -> C1 * C2
Run Code Online (Sandbox Code Playgroud)
很容易写,但不能扩展到3个术语:这里折叠会计算
f1 * (f2 * f3)
Run Code Online (Sandbox Code Playgroud)
代替
f1 * f2 * f3
Run Code Online (Sandbox Code Playgroud)
[同构但不相等]
这个问题的概括是"我如何实现一种多语言编程语言",这里有点太多了.我试图做的是提供内置变压器:
咖喱:T1*T2*T3 ...... - > T1 - > T2 - > ......不发生:T1 - > T2 - > .. T1*T2*T3
那么用户可以用二元运算符进行折叠:
uncurry (fold user_op (uncurry term))
Run Code Online (Sandbox Code Playgroud)
但这既不够通用,也不是很好.. :)
我想Haskell的一个等价问题是:由于Haskell没有n-ary产品,n-ary元组构造函数在库中用n个函数模拟,其中每个函数必须手工写出.这显然很糟糕.这将如何解决?
[我的意思是,编写一个Python脚本来生成那些n个函数达到某个极限n是微不足道的,那么为什么在语言中以一种好的方式这么做呢?]
我刚刚读到了关于"延迟加载"设计模式的内容.
是否可以过度使用延迟加载来加载所有类并include(..)
完全忘记?
这种方法的缺点是什么?
我是新手,所以请耐心等待
例如,Firefox ..我转到C/program files/mozilla/firefox文件夹..但是我没有看到他们用于程序默认主题的图像/按钮
此外,Photoshop和其他程序:如何存储按钮,图像和其他媒体(不是在我看到的文件夹中)?
同样的事情,当我在visual c ++中创建一个简单的程序时,我看不到图标所在的位置?
非常感谢
成功导入ij
包需要做什么?我收到一个错误:
ITCN_.java:1: package ij does not exist
Run Code Online (Sandbox Code Playgroud)
进口是:
import ij.*;
import ij.io.*;
import ij.gui.*;
import ij.process.*;
import ij.measure.*;
import ij.plugin.*;
import ij.plugin.frame.*;
import ij.plugin.filter.PlugInFilter;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.lang.*;
import java.text.*;
Run Code Online (Sandbox Code Playgroud) 如何使用EntryID的C#VSTO Outlook 2007插件打开联系人.
现在我正在联系联系人文件夹中的所有联系人:
string entryid = ...
Outlook.Application outlookApp = new Outlook.Application();
Outlook.MAPIFolder fldContacts = outlookApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts) as Outlook.MAPIFolder;
foreach (Outlook._ContactItem contact in fldContacts.Items)
{
if (contact.EntryID==entryid) {
contact.Display(false);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但这不是联系人文件夹中许多联系人的有效代码