Django,循环模型声明

时间:2017-05-22 15:39:03

标签: python django django-models

我刚开始与Django一起旅行,我对Choice Field有疑问。 我想在一些ChessGame中制作模型,我必须通过ChessBoard制作Choice Field。 我有这样的事情:

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

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

2 个答案:

答案 0 :(得分:0)

是的,您可以使用循环生成此内容:

moves = ['a1', 'b1', 'c1'.....]

moves_choices = [(m, m) for m in moves]

答案 1 :(得分:0)

我不能说我对国际象棋太熟悉了,但假设你想要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')

]