о cacade foreignkey на странице администратора django - PullRequest
0 голосов
/ 08 декабря 2010

Моя модель, как показано ниже:

class Manufacturers(models.Model):
    name = models.CharField()

class Phones(models.Model):
    manufacturer = models.ForeignKey(Manufacturers)
    name = models.CharField()

class Prices(models.Model):
    phone = models.ForeignKey(Phones)
    price = models.DecimalFeild()

, и я зарегистрировал их в admin.py

Моя проблема: В интерфейсе администратора django, когда я добавляю цену, яМожно выбрать телефон из выпадающего списка, но телефонов так много, поэтому сначала я хочу выбрать производителя, а затем выбрать телефон из телефонов производителя.Как я могу сделать это.Большое спасибо.

1 Ответ

1 голос
/ 08 декабря 2010

Для этого используется термин « цепочки выбора меню ».

В django имеется ряд реализаций.Тот, который вы можете найти полезным, это django-smart-selects .

Используя django-smart-selects, вы бы описали свои модели следующим образом:

class Manufacturers(models.Model):
    name = models.CharField()

class Phones(models.Model):
    manufacturer = models.ForeignKey(Manufacturers)
    name = models.CharField()

class Prices(models.Model):
    phone = ChainedForeignKey(
        Phone, 
        chained_field="manufacturer",
        chained_model_field="manufacturer", 
        show_all=False, 
        auto_choose=True
    )
    price = models.DecimalField()

Все сказанное, интересно, реализуете ли вы это наилучшим образом.

Может быть, лучше, чтобы цены отображались в форме администратора для каждого телефона.Таким образом, вместо создания записи о цене и выбора телефона из раскрывающегося списка, вы должны перейти к записи для этого телефона и добавить запись о цене.См. Документацию django по InlineModelAdmin .

...