1

私は次のモデルを持っています:

class Category(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField()
    parent = models.ForeignKey('self', blank = True, null = True, related_name="children")

class Business(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length=200)
    slug = models.SlugField()
    category = models.ForeignKey(Category)
    city = models.ForeignKey(City)

modelFormを使用してビジネスを追加すると、リーフ以外のカテゴリが選択ボックスに表示されます。

たとえば、次のカテゴリ階層があるとします。

- Cars
     -- Car Rental
     -- Car Dealership
     -- Mechanics
- Restaurants
    -- Burgers
    -- Chinese
    -- Sushi
    -- Pizza
    -- Latin american
         -- Mexican
         -- Venezuelan
         -- Argentinian

この階層では、車、レストラン、ラテンアメリカ以外のすべての選択肢が[カテゴリ]選択ボックスに表示されます。これらには子カテゴリがあるためです。

4

1 に答える 1

2
Category.objects.filter(children__isnull=True)


class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)
        self.fields['myfield'].queryset = Category.objects.filter(children__isnull=True)
于 2012-05-01T17:28:21.323 に答える