【问题标题】:Django, loop in model declarationDjango,模型声明中的循环
【发布时间】:2017-05-22 15:39:03
【问题描述】:

我刚开始使用 Django,但我遇到了选择字段的问题。 我想在一些 ChessGame 中制作模型,我必须通过 ChessBoard 制作选择字段。 我有这样的事情:

move = {
  ('a1', 'a1'),
  ('b1', 'b1'),

等等。 是否可以更简单地声明此代码? 也许一些 for 循环?

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    是的,您可以使用循环生成它:

    moves = ['a1', 'b1', 'c1'.....]
    
    moves_choices = [(m, m) for m in moves]
    

    【讨论】:

      【解决方案2】:

      我不能说我对国际象棋太熟悉了,但假设你想要 a1-h8,这行得通:

      import itertools
      
      move = []
      for a, b in itertools.product('abcdefgh', '12345678'):
          name = a + b
          move.append((name, name))
      

      结果:

      [
          ('a1', 'a1'), ('a2', 'a2'), ('a3', 'a3'), ('a4', 'a4'),
          ('a5', 'a5'), ('a6', 'a6'), ('a7', 'a7'), ('a8', 'a8'),
          ('b1', 'b1'), ('b2', 'b2'), ('b3', 'b3'), ('b4', 'b4'),
          ('b5', 'b5'), ('b6', 'b6'), ('b7', 'b7'), ('b8', 'b8'),
          ('c1', 'c1'), ('c2', 'c2'), ('c3', 'c3'), ('c4', 'c4'),
          ('c5', 'c5'), ('c6', 'c6'), ('c7', 'c7'), ('c8', 'c8'),
          ('d1', 'd1'), ('d2', 'd2'), ('d3', 'd3'), ('d4', 'd4'),
          ('d5', 'd5'), ('d6', 'd6'), ('d7', 'd7'), ('d8', 'd8'),
          ('e1', 'e1'), ('e2', 'e2'), ('e3', 'e3'), ('e4', 'e4'),
          ('e5', 'e5'), ('e6', 'e6'), ('e7', 'e7'), ('e8', 'e8'),
          ('f1', 'f1'), ('f2', 'f2'), ('f3', 'f3'), ('f4', 'f4'),
          ('f5', 'f5'), ('f6', 'f6'), ('f7', 'f7'), ('f8', 'f8'),
          ('g1', 'g1'), ('g2', 'g2'), ('g3', 'g3'), ('g4', 'g4'),
          ('g5', 'g5'), ('g6', 'g6'), ('g7', 'g7'), ('g8', 'g8'),
          ('h1', 'h1'), ('h2', 'h2'), ('h3', 'h3'), ('h4', 'h4'),
          ('h5', 'h5'), ('h6', 'h6'), ('h7', 'h7'), ('h8', 'h8')
      
      ]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-10
        • 2012-04-29
        • 2011-10-18
        • 2015-10-28
        • 2021-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多