При создании flatpage я хочу, чтобы пользователь выбрал шаблон из предопределенного списка. Для хранения Flatpage
нетронутая модель, я предпочитаю ChoiceField
ModelChoiceField
(последний обеспечивает PK шаблона, но мне нужно название template_name поля):
class NewFlatpageForm(FlatpageForm):
template_name = forms.ChoiceField(choices = [])
def __init__(self, *args, **kwargs):
self.base_fields['template_name'].choices = ProjectTemplate.objects.values_list('path', 'name')
super(NewFlatpageForm, self).__init__(*args, **kwargs)
Я переопределяю __init__
или Django заполняет выбор в сервере, запускаются, и не обновляет список затем.
У меня нет администраторского опыта, но я сделал подобные вещи с помощью fields
припишите если не использование администратора. Однако в этом случае я получил сообщение исключения fields
не атрибут формы. __dict__
показал мне существует a base_fields
атрибут и использование его работают. Так, почему использование base_fields здесь, и почему fields
не представляют, и наконец я делаю что-то hacky?
Пара других вариантов:
file = File.read(path).sub(/line2\n/, 'Some nice little sentence\n\1')
File.write(path, file)
file = File.readlines(path)
index = file.index("line2")
file.insert(index, "Some nice little sentence")
File.write(path, file)
-121--2943720- поля
не существует до после , который вы вызывали Super
. Так что просто поменяйте порядок строк, так что сначала приходит
.