小编Man*_*anu的帖子

Django Unique Together(带外键)

我有一种情况,我想使用Meta选项unique_together来强制执行某个规则,这里是中间模型:

class UserProfileExtension(models.Model):
    extension = models.ForeignKey(Extension, unique=False)
    userprofile = models.ForeignKey(UserProfile, unique=False)
    user = models.ForeignKey(User, unique=False)  

    class Meta:
        unique_together = (("userprofile", "extension"),
                           ("user", "extension"),
                           # How can I enforce UserProfile's Client 
                           # and Extension to be unique? This obviously
                           # doesn't work, but is this idea possible without
                           # creating another FK in my intermediary model 
                           ("userprofile__client", "extension"))
Run Code Online (Sandbox Code Playgroud)

这是UserProfile:

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    client = models.ForeignKey(Client)
Run Code Online (Sandbox Code Playgroud)

谢谢.

python django-models

58
推荐指数
5
解决办法
4万
查看次数

打字稿:类型中缺少索引签名

我希望MyInterface.dic像字典一样name: value,我将其定义如下:

interface MyInterface {
    dic: { [name: string]: number }
}
Run Code Online (Sandbox Code Playgroud)

现在我创建一个等待我的类型的函数:

function foo(a: MyInterface) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

并输入:

let o = {
    dic: {
        'a': 3,
        'b': 5
    }
}
Run Code Online (Sandbox Code Playgroud)

我期待foo(o)是正确的,但编译器正在下降:

foo(o) // Typescript error: Index signature is missing in type { 'a': number, 'b': number }
Run Code Online (Sandbox Code Playgroud)

我知道有一个可能的演员:let o: MyInterface = { ... }哪个可以做,但问题是,为什么打字稿不能识别我的类型?


额外:如果o内联声明,则工作正常:

foo({ 
  dic: {
    'a': 3, 
    'b': 5
  }
})
Run Code Online (Sandbox Code Playgroud)

casting typescript

28
推荐指数
8
解决办法
3万
查看次数

如何在项目中全局声明类型(打字稿)

在一个打字稿项目中,有没有办法声明一个类型并在所有文件中共享它,就像我们可以访问全局定义的类型一样node.d.ts

例如,让我们说在我的项目中,a IUser就是这样的东西

interface IUser {
   name: string,
   mail: string
 }
Run Code Online (Sandbox Code Playgroud)

好的,我可以在一个common/interfaces.ts文件中创建该接口并在每次需要时导入它...但是能够为整个项目全局声明这样的接口并且可以快速访问它们而不导入任何文件会很好

typescript

23
推荐指数
3
解决办法
1万
查看次数

VSCode:如何为 Python 配置“组织导入”(isort)

将问题镜像至:

我想配置 VSCode 如何调用isort,这样我就可以在调用Organize imports.py 文件时进行自定义。


特别是,VSCode 已开始删除两个 isort-section 之间的空行,不知道为什么。

from django...
from myproject... # removing blanck line between 2 sections
Run Code Online (Sandbox Code Playgroud)

python sorting import visual-studio-code isort

18
推荐指数
3
解决办法
3万
查看次数

从jsDoc引用一个TS接口

.js借助 jsDoc 表示法和文件,使用 VSCode 几乎可以从 Typescript 中受益tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "noEmit": true,
    "allowJs": true,
    "checkJs": true,
    "target": "es6",
    "resolveJsonModule": true,
    "moduleResolution": "node",

  },
  "include": ["index.js", "./src"]
}
Run Code Online (Sandbox Code Playgroud)
{
  "compileOnSave": false,
  "compilerOptions": {
    "noEmit": true,
    "allowJs": true,
    "checkJs": true,
    "target": "es6",
    "resolveJsonModule": true,
    "moduleResolution": "node",

  },
  "include": ["index.js", "./src"]
}
Run Code Online (Sandbox Code Playgroud)

现在,是否可以引用 at 中定义的d.ts接口node_modules?特别是我返回一个“my_dependency.Storage”对象,但我无法使用普通的 javascript 引用它:

/**
 * @return {Promise<string>}
 */
const foo = Promise.resolve('hi');
module.exports = foo;
Run Code Online (Sandbox Code Playgroud)

会明白我指的是 Web Storage API …

javascript typescript visual-studio-code

12
推荐指数
1
解决办法
5163
查看次数

lodash:如何压缩具有值的对象数组

我正在研究如何使用 lodash 压缩具有值的对象数组,包括每个值的新键。尝试使用zipzipObjectmap但我没有找到密钥。

我想做的是以下(避免手动迭代数组)

   const array = [
     {a: 3, b: 42}, 
     {c: 4}, 
     {d: 12}
   ]
   const values = ['these', 'are', 'new', 'values']

   // goal = foo(array, values) <<< HERE
   goal = [
     {a: 3, b: 42, v: 'these'}, 
     {c: 4, v: 'are'},
     {d: 12, v:'new'}
   ]
Run Code Online (Sandbox Code Playgroud)

javascript zip dictionary lodash

6
推荐指数
1
解决办法
1万
查看次数

创建一个 lambda 函数来同时迭代集合

我正在尝试 Java 8,我想迭代 2 个集合并为每对值调用一个参数函数。

抽象地说,我想foo(tuple, i)为每次迭代应用一个函数

[ v1, v2, v3, v4, v5, v6 ] (first collection)
[ w1, w2, w3, w4, w5, w6 ] (second collection)
---------------------------
  foo(<v1,w1>, 0)
  foo(<v2,w2>, 1)
  ...
  foo(<v6,w6>, 5)
Run Code Online (Sandbox Code Playgroud)

现在我得到了什么(java和伪代码)

// Type of f?
private <S,U> void iterateSimultaneously(Collection<S> c1, Collection<U> c2, Function f) {
        int i = 0
        Iterator<S> it1 = c1.iterator()
        Iterator<U> it2 = c2.iterator()
        while(it1.hasNext() && it2.hasNext()) {
            Tuple<S, U> tuple = new Tuple<>(it1.next(), it2.next())             

            // call somehow f(tuple, i) …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

5
推荐指数
1
解决办法
320
查看次数

VSCode中的多行光标索引

在Visual Studio Code中,使用多行光标时是否可以访问当前光标号

例如打开这个

[
  { name: 'u?' },
  { name: 'u?' },
  { name: 'u?' },
  { name: 'u?' },
  { name: 'u?' },
  { name: 'u?' }
]
Run Code Online (Sandbox Code Playgroud)

入这个

[
  { name: 'u0' },
  { name: 'u1' },
  { name: 'u2' },
  { name: 'u3' },
  { name: 'u4' },
  { name: 'u5' }
]
Run Code Online (Sandbox Code Playgroud)

(?代表光标)

editor visual-studio-code

4
推荐指数
1
解决办法
222
查看次数

pytest:为每个测试函数设置一个模拟

为 python 项目创建单元测试,我们正在达到这种“模板”

from unittest import TestCase
from unittest.mock import patch, Mock

@patch('......dependency1')
@patch('......dependency2')
@patch('......dependencyn')
class MyTest(TestCase):

  def test_1(self, mock1, mock2, mockn):
      # setup mock1 & mock2...
      # call the subject case 1
      # assert response and/or interactions with mock1 and mock2...

  def test_2(self, mock1, mock2, mockn):
      # setup mock1 & mock2...
      # call the subject case 2
      # assert response and/or interactions with mock1 and mock2...
Run Code Online (Sandbox Code Playgroud)

关键是,有时“设置”部分在某些测试用例中是重复的,因此我想将配置提取到方法中setUp(),例如,以下是伪代码:

def setUp(self):
  mock1.foo.return_value = 'xxx'
  mock2.goo.side_effect = [ ... ] …
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking pytest python-unittest

1
推荐指数
1
解决办法
5564
查看次数