2016-02-11 4 views
2

Я использую django-cms. У меня есть моя собственная модель продукта, который имеет атрибутdjango можно ли получить доступ к данным, хранящимся в формах?

page = models.ManyToManyField(Page, verbose_name=_('Page'), related_name="products") 

Page является Джанго-КМВ класса. В интерфейсе администратора я могу добавить новую страницу с полем Slug. Теперь в class Page нет полевого слизняка.

Это поле пробкового в forms.py

slug = forms.CharField(label=_("Slug"), widget=forms.TextInput()) 

Можно ли получить доступ к этой области в коде?

+0

Как только поле объявлено в форме, оно по-прежнему доступно для вас в вашем представлении, обратившись к cleaned_data ['formField']. Когда у вас есть доступ к очищенным_датам, вы можете делать с ними все, что хотите (сохранить их в модели или нескольких моделях и т. Д. В зависимости от вашего варианта использования) – rreddy

+0

Если это будет мое дело, то да. Но мне нужно получить эти данные в моем обычном промежуточном программном обеспечении. Это происходит, прежде чем страница отображается, поэтому я не могу получить ее из cleaned_data. –

+0

ваш собственный класс промежуточного ПО все еще будет иметь объект запроса, вам просто нужно переопределить https://docs.djangoproject.com/en/1.9/topics/http/middleware/#process-request или другие методы, которые следуют за ним. – rreddy

ответ

0

Глупая ошибка. Django-CMS class Page на самом деле имеет функцию:

def get_slug(self, language=None, fallback=True, version_id=None, force_reload=False):

В моем пользовательском промежуточном слое просто называют эту функцию и решить ее.

Смежные вопросы