Найти - Пользователи
Полная версия: как исключить из выпадающего списка формы часть элементов
Начало » Django » как исключить из выпадающего списка формы часть элементов
1
qman
Всем привет,
есть модель (часть model.py)
class Book(models.Model):
title = models.CharField(max_length=100, verbose_name='Название')
authors = models.ManyToManyField(Author, verbose_name='Автор')
publisher = models.ForeignKey(Publisher, verbose_name='Издательство')
publication_date = models.DateField(blank=True, null=True,\
verbose_name='Дата издания')
class Admin:
pass
def __unicode__(self):
return self.title

class Order(models.Model):
book = models.ForeignKey(Book, verbose_name='Книга')
count = models.PositiveIntegerField(verbose_name='Кол-во')
title = models.ForeignKey(OrderDetail, verbose_name='Название заказа')
user = models.ForeignKey(User)
class Admin:
pass
def __unicode__(self):
return u'%s' % self.book
форма для заявки новых книг
class PartialOrderForm(OrderForm):
"""Форма редактирования книг в заявках"""
class Meta(OrderForm.Meta):
exclude = ('title', 'user')

def cleaned_data():
pass
представление для добавления в заказ новых книг
def order_add_book(request, order_id, book_id = None):
if book_id:#редактируем книгу в заявке
order = get_object_or_404(Order, pk=order_id)
if request.method == 'POST':
form = PartialOrderForm(request.POST, instance=order)
if form.is_valid():
form.save()
return HttpResponseRedirect('order/edit/%s/'%order_id)
else:
form = OrderForm(instance=order)
else:#добавляем новую книгу
if request.method == 'POST':
#order определяем только для формы со скрытыми полями
#form = OrderForm(request.POST)заменили на
order_detail = OrderDetail(id = order_id)
user = User (id = request.user.id)#текущий пользователь
order = Order(title = order_detail, user = user)
form = PartialOrderForm(request.POST, instance = order )
if form.is_valid():
new_book = form.save()
return HttpResponseRedirect('/order/edit/%s/'%order_id)
else:
form = PartialOrderForm()
return render_to_response('books/order_form.html', {'form': form})
Подскажите как исключить из выпадающего списка формы заявки книги, которые были уже добавлены?
P.S. Предполоагаю что нужно исключить из списка всех книг те книги , которые были добавлены. Но не знаю как передать в выпадающий список формы перечень книг?
PPS сегодня ночью такой же вопрос задавал, но утром не нашел. может пробелмы были на хостинге.
wonderfulll
1) самый лёгкий вариант просто добавить дополнительное поле книга_добавлена
2) записывать в сессию или куку добавленые книги и потом их эксклудить
3) использовать жаваскрипт для добавления заказа и удаления добавленных книг
qman
wonderfulll
1) самый лёгкий вариант просто добавить дополнительное поле книга_добавлена
извините за тупость, можете дать ссылочку в джанго документации как это сделать?
wonderfulll
2) записывать в сессию или куку добавленые книги и потом их эксклудить
я это и спрашиваю как их эксклюдить?
wonderfulll
с добавлением поля я тупанул, сорри :)

http://docs.djangoproject.com/en/dev/topics/db/queries/#s-retrieving-all-objects

books = Book.objects.exclude(id__in = [1,2,3])
qman
Спасибо!
а как переменную books разместить в выпадающем списке?
P.S. наверно для этого надо передать переменную в класс формы, но как пока не сообразил.
slav0nic
Если кверисет,то http://docs.djangoproject.com/en/dev/ref/forms/fields/#fields-which-handle-relationships
qman
создание формы оказалось проще чем думал.
form = PartialOrderForm()
form.fields['bookz']=forms.ModelChoiceField(queryset=Book.objects.exclude(id__in = [1,2,3]))
осталось queryset доделать….
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB