类别和子类别OPT Group select in Django

u91tlkcl  于 2022-11-18  发布在  Go
关注(0)|答案(1)|浏览(129)

我有两个三个模型:

  • 宣告
  • 类别
  • 子类别

这是我的form.py

# Formulaire de la depose d'une annonce
class AnnonceForm(forms.ModelForm):
    title = forms.CharField(label="", help_text="", widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder':'Titre de mon annonce'}))
    category = forms.ModelChoiceField(queryset=Souscat.objects.all(), empty_label='Selectionnez une categorie', label="", help_text="", widget=forms.Select(attrs={'class': 'form-control'}))
    class Meta:
        model = Annonce
        fields = ('title','category')

这是我的模特

# Catégories
class Category(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField(null=True, unique=True)
    created_date = models.DateTimeField(default=timezone.now)
    
    class Meta:
        verbose_name = "Catégorie"
        verbose_name_plural = "Catégories"

    def __str__(self):
        return self.title

# Sous catégories
class Souscat(models.Model):
    category = models.ForeignKey(Category, related_name="s_category", on_delete=models.CASCADE)
    title = models.CharField(max_length=255)
    slug = models.SlugField(null=True, unique=True)
    created_date = models.DateTimeField(default=timezone.now)
    
    class Meta:
        verbose_name = "Sous catégorie"
        verbose_name_plural = "Sous catégories"

    def __str__(self):
        return self.title

在我的annouce,我将只得到子类别,但在我的选择我想显示类别和子类别可以选择。我已经看到这是可能的“optgroup”,但我已经成功地得到了我的所有子类别,但我想显示类别(不可选择)在我的选择与子类别(可选择)。
让我创建的类别简单地为{{ form.category }}
我怎么做这个?
谢谢你

yqkkidmi

yqkkidmi1#

我知道这已经很长一段时间了,但我最近也遇到了同样的困难,我在这个网站的指导下解决了这个问题。
https://simpleisbetterthancomplex.com/tutorial/2019/01/02/how-to-implement-grouped-model-choice-field.html
基本上,创建了两个类来生成代码并使神奇发生!对我来说它工作得很完美。

相关问题