我刚开始与Django一起旅行,我对Choice Field有疑问。 我想在一些ChessGame中制作模型,我必须通过ChessBoard制作Choice Field。 我有这样的事情:
move = {
('a1', 'a1'),
('b1', 'b1'),
等。 是否可以更简单地声明此代码? 也许一些for循环?
答案 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')
]