#django #django-models #django-forms
#django #django-модели #django-forms
Вопрос:
В соответствии с документами Django я могу сделать следующее:
class Article(models.Model):
headline = models.CharField(max_length=200, null=True, blank=True,
help_text="Use puns liberally")
content = models.TextField()
class ArticleForm(ModelForm):
headline = MyFormField(max_length=200, required=False,
help_text="Use puns liberally")
class Meta:
model = Article
В моем случае я бы хотел, чтобы «заголовок» вообще не отображался в качестве опции в подклассе. Каков наилучший способ сделать это? Я уже пробовал «исключить»
class ArticleForm(ModelForm):
class Meta:
model = Article
exclude = ["headline"]
Но поскольку он объявлен в родительском файле, он все равно отображается. Также я попытался объявить это как headline = «», но результат тот же.
Решение:
def __init__(self, *args, **kwargs):
super(NameOfSubclassedForm, self).__init__(*args, **kwargs)
del self.fields['headline'] # field that needs removing
TIA
* обновление: в моем оригинальном сообщении я случайно поместил exclude outside meta
* обновление 2: уже сообщалось об ошибке:https://code.djangoproject.com/ticket/13971
* обновление 3: добавлено решение
Ответ №1:
Я полагаю, вы просто поместили свое исключение не в то место. Попробуйте это так:
class ArticleForm(ModelForm):
class Meta:
model = Article
exclude = ("headline",)
Ознакомьтесь с документами.
Комментарии:
1. @peter мои извинения, я фактически поместил исключение внутри Meta, я разместил его снаружи при создании образца.
2. В таком случае, вы уверены, что все написано правильно? И правильно расставлены отступы? Именно так в документах говорится об исключении поля из
ModelForm
.3. На самом деле, я только что протестировал это сам, и исключение не влияет на поле, определенное в самой форме в родительском классе. Возможно, это ошибка Django.
4. @jack: Я уверен, что все написано правильно и предназначено правильно, но всегда есть место для ошибки, но пока все, кажется, на месте. Второй раз, когда я объявил ArticleForm, был просто частью моего примера.
5. @chrispratt: Рад слышать, что кто-то еще смог воспроизвести. На данный момент я пытаюсь найти другой способ скрыть поле. У меня это работает также для элементов, которые не определены в форме.