django smart_selects, второй уровень не будет заполняться - PullRequest
1 голос
/ 06 февраля 2012

Не могу получить выпадающий список второго уровня (подкатегория / E_cat) для заполнения.Первый уровень (категория), кажется, работает нормально.Я думаю, что я попробовал почти все разумные комбинации выборов chained_field и chained_model_field без успеха.

Я хочу, чтобы таблица Equip заполнилась идентификатором для категории и идентификатором для подкатегории.Ниже показано, как выглядит модель в данный момент.Что я делаю неправильно?

model.py

class Category(models.Model):
    cat_no = models.IntegerField(null=True, blank=True)
    cat_txt = models.CharField(max_length=45)    
    def __unicode__(self):
        return self.cat_txt

class E_cat(models.Model):
    cat_no = models.ForeignKey(Category)
    cat_txt = models.CharField(max_length=45)
    scat_no = models.IntegerField(null=True, blank=True)
    scat_txt = models.CharField(max_length=45)
    def __unicode__(self):
        return self.scat_txt


class Equip(models.Model):
    category = models.ForeignKey(Category)
    subcategory = ChainedForeignKey(
        E_cat,
        chained_field="category",
        chained_model_field="cat_no",
        show_all=False,
        auto_choose=True,
    )
    manufacturer = models.CharField(max_length=35, blank=True)
    mfg_no = models.CharField(max_length=35, blank=True)
    size = models.CharField(max_length=35, blank=True)
    color = models.CharField(max_length=35, blank=True)
    quanity = models.IntegerField(null=True, blank=True)
    short_description = models.CharField(max_length=80, blank=True)
    location_zip = models.IntegerField(null=True, blank=True)
    listings = models.ForeignKey(Listings)
    info = models.TextField(null=True, blank=True)

Ответы [ 3 ]

0 голосов
/ 20 марта 2017

html.file

включает следующее, если вы используете формы

<script src="{% static 'smart-selects/admin/js/chainedfk.js' %}"></script>
<script src="{% static 'smart-selects/admin/js/chainedm2m.js' %}"></script>

models.py

class Continent(models.Model):
        name = models.CharField(max_length=255)
        def __str__(self):
            return self.name

    class Country(models.Model):
        continent= models.ForeignKey(Continent)
        name = models.CharField(max_length=255)
        def __str__(self):
            return self.name

    class City(models.Model):
        continent= models.ForeignKey(Continent)
        country= ChainedForeignKey(Country, chained_field="continent",  chained_model_field="continent", show_all=False, auto_choose=True, sort=True)
        name = models.CharField(max_length=255)
        def __str__(self):
            return self.name

    class Neighborhood(models.Model):
        continent= models.ForeignKey(Continent)
        country= ChainedForeignKey(Country, chained_field="continent",  chained_model_field="continent", show_all=False, auto_choose=True, sort=True)
        name = models.CharField(max_length=255)
        city= ChainedForeignKey(City, chained_field="country",  chained_model_field="country", show_all=False, auto_choose=True, sort=True)
name = models.CharField(max_length=255)
        def __str__(self):
            return self.name

admin.py

admin.site.register(Component)
admin.site.register(Group)
admin.site.register(Failure)
admin.site.register(Neighborhood)
0 голосов
/ 02 мая 2017

ОБНОВЛЕНИЕ - МАЙ 2017

включите этот тег сразу после jQuery версии 2.Он отлично работает в версиях Django 1.10 и 1.11 с использованием python 3.5.2.Надеюсь, это поможет вам

<script type="text/javascript" src="{% static 'smart-selects/admin/js/chainedfk.js' %}"></script>
<script type="text/javascript" src="{% static 'smart-selects/admin/js/chainedm2m.js' %}"></script>
<script type="text/javascript" src="{% static 'smart-selects/admin/js/bindfields.js' %}"></script>
0 голосов
/ 08 февраля 2012

Это выглядит хорошо. Возможно, проблема в том, что вы не настроили URL-адреса smart_selects или, возможно, вам не хватает javascript на вашей реальной странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...