我有这样一个问题:
有一个类的元素列表CAnswer(不需要描述类),我需要对它进行洗牌,但是有一个约束 - 列表中的一些元素已经CAnswer.freeze设置为True,并且这些元素不能被洗牌,而是保留在它们的上面原始职位.所以,让我们说,对于给定的列表:
[a, b, c, d, e, f]
Run Code Online (Sandbox Code Playgroud)
如果所有元素都是CAnswer,但是c.freeze == True,对于其他元素freeze == False,可能的结果可能是:
[e, a, c, f, b, d]
Run Code Online (Sandbox Code Playgroud)
所以索引为2的元素仍处于其位置.
实现它的最佳算法是什么?
先感谢您 :)
可能的重复:
我可以拥有一个对自身有外键引用的 Django 模型吗?
我想在我的 Django 应用程序中实现一个简单的文件夹文件结构。所以我有一个存储文件夹的模型,但我也想存储这个文件夹和父文件夹之间的关系。模型的简化版本如下所示:
class mFolder(models.Model):
name = models.CharField(max_length=50)
parentFolder = models.ForeignKey(mFolder, unique=False, related_name="childrenFolders")
Run Code Online (Sandbox Code Playgroud)
然而这是不可能的,因为 mFolder 尚未声明。
这个问题有什么简单的解决方案吗?
提前感谢您的帮助。
很抱歉非特定问题,但我想这可能是一个有趣的问题.至少对我来说;)
我正在使用django模型一次从几个相关表中获取数据.当QuerySet得到支持时,我宁愿期望django像这样进行查询:
SELECT t1.field1, t1.field2, t2.field1, t2.field2 FROM t1
JOIN t2 ON (t1.fk_t2 = t2.pk);
Run Code Online (Sandbox Code Playgroud)
但不是我所想到的,我可以看到Django做这样的事情:
SELECT t1.field1, t1.field2, t1.fk_t2 FROM t1;
Run Code Online (Sandbox Code Playgroud)
然后为所有t1.fk_t2
SELECT t2.field1, t2.field2 FROM t2 WHERE id = (here comes some single id);
Run Code Online (Sandbox Code Playgroud)
这是默认的Django行为吗?为什么会这样?这更有效吗?我首先想到的是,制作JOIN需要进行交叉连接,然后过滤非常大的表,当进行多次单选时,您可以处理的数据不是真正需要的,但这只是一个想法.
谁能解释一下?提前致谢!