Форум сайта python.su
Добрый день!
У меня возникла проблема с формой добавление в бд. Раньше было просто передача значений через пост а ля ПХП. Покопавшись на форуме и сайтах я нашел один пример в документации http://djbook.ru/rel1.6/topics/class-based-views/generic-editing.html#model-forms но у меня возник вопрос какой url писать в get_absolute_url
Офлайн
И где вопрос? Для работы с формами никакой get_absolute_url не нужен.
Офлайн
Насчет get_absolute_url ясно.
А вот с формой все равно не могу понять.
Модель:
class Many(models.Model):
users = models.ManyToManyField('auth.User', related_name='+')
sum = models.FloatField()
date = models.DateField()
comment = models.CharField(max_length=100)
category = models.ForeignKey(Category)
def __unicode__(self):
return u'%s %s %s %s' % (self.sum, self.date, self.comment, self.category_id)
View:
class AddErn(CreateView):
model = Many
fields = ['date', 'sum', 'comment', 'category']
def form_valid(self, form):
form.instance.users = self.request.user
return super(AddErn, self).form_valid(form)
Urls:
(r'^earnings/add_earnings/$', views.AddErn.as_view())
Выводится ошибка "needs to have a value for field "many" before this many-to-many relationship can be used"
Отредактировано FishHook (Сен. 26, 2014 06:11:15)
Офлайн
form.instance.users = self.request.userform.instance.users.add(self.request.user)
Офлайн
form.instance.users.add(self.request.user)
Особо не помогло То же самое пишет.
А как через класс форм сделать чтобы в поле category был список какой мне надо, а не чтобы все там было. Через обычную форму я делал так:
category_list = Category.objects.filter(operation_type=1)
categorys = [(i.id, i.name) for i in category_list]
category = forms.ChoiceField(label=u'Категория', widget=forms.Select(), choices=categorys, required=True)
Отредактировано balalay12 (Сен. 26, 2014 06:55:27)
Офлайн
Мужик, освой тег
[code python][/code]
Отредактировано FishHook (Сен. 26, 2014 06:56:59)
Офлайн
def form_valid(self, form): instance = form.save() instance.users.add(self.request.user) return super(AddErn, self).form_valid(form)
Офлайн
Спасибо за помощь работает. Теперь вопрос в другом как сделать url из шаблона на такой url в файлу urls:
(r'^earnings/add_earnings/$', views.AddErn.as_view(template_name='add.html', success_url="/earnings/"))
<a href="/earnings/add_earnings/">
Отредактировано balalay12 (Сен. 26, 2014 07:41:47)
Офлайн
В Джанге есть функция reverse. В шаблонах есть соответствующий ей тег {% url %}.
Об этом и многом другом хорошо рассказано в документации. Например, тынц
Офлайн
У меня еще пара вопросов:
1. Как изменить значения перед сохранением в бд. Я попробовал так:
data = form.cleaned_data data['sum'] *= -1
category_list = Category.objects.filter(operation_type=1) categorys = [(i.id, i.name) for i in category_list] category = forms.ChoiceField(label=u'Категория', widget=forms.Select(), choices=categorys, required=True)
Офлайн