Bên trong mẫu, các travels
lĩnh vực như thực sự là một thể hiện của BoundField
(mà là một đối tượng Django gắn kết lại với nhau các lĩnh vực và giá trị của nó cho rendering). Điều này có nghĩa là các thuộc tính có phần khác nhau.
Để lặp qua các lựa chọn như một tuple:
{% for choice in form.travels.field.choices %}
{{ choice }} -
{% endfor %}
Produces: (1, 'One') - (2, 'Two') -
Để lặp qua các yếu tố trong các bộ lựa chọn riêng:
{% for choice_id, choice_label in form.travels.field.choices %}
{{ choice_id }} = {{ choice_label }} <br/>
{% endfor %}
Produces: 1 = One
2 = Two
Hy vọng rằng sẽ giúp. Tuy nhiên, đã nói rằng, tôi không chắc chắn về bối cảnh mà bạn cần phải làm điều này; trên bề mặt, nó không có vẻ giống như django. Bạn có thể thấy rằng việc sử dụng trường biểu mẫu tùy chỉnh hoặc thẻ mẫu tùy chỉnh cung cấp cho bạn khả năng thực thi dễ sử dụng hơn, có thể tái sử dụng tốt hơn để duy trì sự tách biệt dự kiến của django giữa mã xem và mã mẫu. Tất nhiên, YMMV và nó cũng có thể là cách tiếp cận lặp trực tiếp là thích hợp cho bạn trong trường hợp này.
Nguồn
2009-04-09 12:35:40
Tôi biết điều này là cũ, nhưng có cách nào để xác định xem trường đó có được chọn không? –
Trước tiên, hãy cẩn thận khi sử dụng tiện ích tùy chỉnh, tùy chọn trường và tùy chọn tiện ích có thể không giống nhau. Vì vậy, bạn sẽ cần phải sử dụng "form.travels.field.widget.choices". –
Thứ hai, để tùy chỉnh chọn nếu bạn đang sử dụng tiện ích radio, bạn sẽ cần phải kiểm tra từng giá trị so với giá trị trường và đặt đầu vào để kiểm tra khi chúng khớp nhau. Ví dụ: "{% if form.travels.value = choice_id%} checked =" checked "{% endif%}". –