Помощь с Django Модель отношения и экран администратора - PullRequest
0 голосов
/ 20 апреля 2010

Мой первый раз с Django и StackOverflow, поэтому я мог бы с небольшой помощью.

Платформа имеет много категорий, и категория может принадлежать многим платформам. Продукт принадлежит одной платформе и одной или нескольким категориям платформ.

Итак, вот что у меня есть для моих моделей:

 class Category(models.Model):
    name = models.CharField(max_length=50, unique=True)
    is_active = models.BooleanField(default=True)

    def __unicode__(self):
        return self.name

class Platform(models.Model):
    name = models.CharField(max_length=50, unique=True)
    is_active = models.BooleanField(default=True)
    categories = models.ManyToManyField(Category)

    def __unicode__(self):
        return self.name

class Product(models.Model):
    name = models.CharField(max_length=50)
    is_active = models.BooleanField(default=True)
    platform = models.ForeignKey('Platform')

    def __unicode__(self):
        return self.name

    class Meta:
        unique_together = ("platform", "category")

В оболочке все выглядит нормально, но я не могу полностью понять, как мне сузить категории на основе платформы при создании нового продукта? В идеале я бы смог заставить это работать на экранах администратора?

Эта модель выглядит нормально, или я могу сделать это лучше?

1 Ответ

0 голосов
/ 20 апреля 2010

У меня такое ощущение, что вы спрашиваете, что при использовании интерфейса администратора и создании новой модели Product вы хотите иметь возможность выбрать Platform, , а затем , быть в состоянии выбрать категорию, где по указанным параметрам категории только те, которые уже связаны с выбранным Platform.

То, что мой друг немного сложнее, чем кажется. Причина в том, что во встроенном в django нет сервера «туда-обратно», в результате чего после выбора Platform веб-приложение отправляется на сервер, собирает параметры для Category и затем отображает их для вас. По умолчанию такой опции нет (хотя я не удивлюсь, если она в конечном итоге станет частью стандартного пакета Django).

Однако есть способ сделать это, внедрив его в javascript / ajax, что может быть немного сложным в зависимости от вашего опыта работы с любым из них.

Хорошая новость заключается в том, что, как и в большинстве распространенных задач в Django, обычно существует приложение для сообщества, либо находящееся в разработке, либо уже доступное для удовлетворения потребностей. В этом случае, вероятно, стоит проверить django-ajax-Filter-Field .

...