Я пытаюсь повторить сайты структуры категорий, которые использует Ebay при публикации продукта. Например, если вы хотите опубликовать Iphone для продажи, вы go разместите объявление, выберите категорию в раскрывающемся меню на форме («электроника и компьютеры»), а затем выберите подкатегорию «телефоны». ", то последняя подкатегория" iphone ". Для создания этой структуры я использую django -категории. Создавая продукт в рабочем файле страницы администратора, форма администратора позволяет мне выбирать из выпадающего меню каждой категории, однако я не могу повторить этот процесс в своей форме, чтобы дать пользователям возможность выбирать из много категорий.
Если вы не знаете, если django -категории, это модифицированный обход дерева предзаказа.
Вот моя модель объявления
class Advert(models.Model):
title = models.CharField(max_length=100, blank=False, null=False)
author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL)
image = models.ImageField(upload_to='media/', blank=True, null=True)
category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True)
quantity = models.IntegerField(blank=False, null=False)
condition = models.CharField(max_length=10, choices=COND_CATEGORIES, blank=False, null=False)
price = models.DecimalField(decimal_places=2, max_digits=14, blank=False, null=False)
description = models.TextField(blank=False, null=False)
date_posted = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
active = models.BooleanField(default=True)
featured = models.BooleanField(default=False)
search_vector = SearchVectorField(null=True, blank=True)
Вот модель категории
class Category(CategoryBase):
class Meta:
verbose_name_plural = 'categories'
И здесь я в форме, которая позволяет пользователям размещать рекламу
class PostAdvertForm(forms.ModelForm):
title = forms.CharField(label='Ad Title', required=True)
category = forms.ChoiceField(choices=Advert.category, label='Choose a category', required=True)
price = forms.DecimalField(label='Price', required=True, widget=forms.TextInput())
description = forms.CharField(widget=forms.Textarea(attrs={'placeholder':
('Please provide a detailed description'),
'autofocus': 'autofocus'}), label='Description', required=True)
condition = forms.ChoiceField(choices=Advert.COND_CATEGORIES, label='Condition', required=True)
quantity = forms.IntegerField(label='Quantity', required=True, widget=forms.TextInput())
image = forms.ImageField(label='Upload an image', required=False)
class Meta:
model = Advert
fields = (
'title', 'category', 'quantity', 'condition', 'price', 'description',
'image')
Использование advert.category в поле выбора не работает из-за того, что «объект ForwardManyToOneDescriptor« не повторяется » ,
Мой вопрос: как я могу отобразить список категорий в поле выбора?
РЕДАКТИРОВАТЬ: Было просто интересно, возможно ли это реализовать полностью с jquery на передней панели и просто отправить через выбранную категорию через очищенные данные? Таким образом, мне даже не нужно было бы использовать django -категории на бэкэнде, я мог бы просто хранить огромное количество категорий.
2-е РЕДАКТИРОВАНИЕ:
Похоже, я получил первую часть этого, я вставил новый код формы ниже:
at = Advert.category.get_queryset()
class PostAdvertForm(forms.ModelForm):
title = forms.CharField(label='Ad Title', required=True)
category = forms.ModelChoiceField(queryset=cat, label='Choose a category', required=True)
price = forms.DecimalField(label='Price', required=True, widget=forms.TextInput())
description = forms.CharField(widget=forms.Textarea(attrs={'placeholder':
('Please provide a detailed description'),
'autofocus': 'autofocus'}), label='Description', required=True)
condition = forms.ChoiceField(choices=Advert.COND_CATEGORIES, label='Condition', required=True)
quantity = forms.IntegerField(label='Quantity', required=True, widget=forms.TextInput())
image = forms.ImageField(label='Upload an image', required=False)
class Meta:
model = Advert
fields = (
'title', 'category', 'quantity', 'condition', 'price', 'description',
'image')
Я никогда не использовал jquery раньше, это лучший вариант для создания плавного выпадающего меню стиля? Я должен сделать так, чтобы они не могли выбрать родительскую категорию, только нижнюю дочернюю категорию.