Я сделал бы это путем подкласса RadioFieldRenderer и привязки его к пользовательскому виджету:
# forms.py
from django import forms
from django.forms.widgets import RadioSelect, RadioFieldRenderer
from django.template.loader import render_to_string
from myapp.models import RatherComplicatedModel
class MyRadioFieldRenderer(RadioFieldRenderer):
def render(self):
return render_to_string(
'my_radio_widget.html',
{'field': self})
class MyRadioSelect(RadioSelect):
renderer = MyRadioFieldRenderer
class RatherComplicatedForm(forms.ModelForm):
RADIO_CHOICES = (
('none', "No Textbox"),
('one', "One Textbox: "),
)
rad = forms.ChoiceField(widget=MyRadioSelect(),choices=RADIO_CHOICES)
class Meta:
model = RatherComplicatedModel
Затем шаблон:
#my_radio_widget.html
<ul>
{% for choice in field %}
<li>
<label for="id_{{ field.name }}_{{ forloop.counter0 }}">
<input type="radio"
name="{{ field.name }}"
value="{{ choice.choice_value }}"
id="id_{{ field.name }}_{{ forloop.counter0 }}"
{% if field.value == choice.choice_value %}
checked='checked'
{% endif %}/>
{{ choice.choice_label }}
</label>
</li>
{% endfor %}
</ul>
Из интерфейса командной строки psql
,
Сначала выберите свою базу данных
\c database_name
Затем, это показывает все таблицы в текущей схеме:
\dt
Программно (или из интерфейса psql
, конечно):
SELECT * FROM pg_catalog.pg_tables;
Системные таблицы находятся в базе данных pg_catalog
.
(для полноты)
Вы также можете запросить (стандарт SQL) информационную схему :
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
Самый простой способ перечислить все таблицы в командной строке для моего вкуса:
psql -a -U <user> -p <port> -h <server> -c "\dt"
Для данной базы данных просто добавляют имя базы данных:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
Это работает и над Linux и над Windows.