Django smart_selects,二级下拉框不填充

1 投票
3 回答
993 浏览
提问于 2025-04-17 12:24

我无法让第二级(子类别/E_cat)下拉菜单显示内容。第一级(类别)似乎工作得很好。我觉得我已经尝试过几乎所有合理的组合来设置链字段和链模型字段,但都没有成功。

我希望Equip表能够填入类别的ID和子类别的ID。

下面是我现在的模型代码。请问我哪里做错了?

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

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

这看起来没问题。可能的问题是你还没有设置好 smart_selects 的网址,或者你的页面上缺少了必要的 JavaScript 代码。

1

更新 - 2017年5月

在jQuery版本2后面加上这个标签。在使用Python 3.5.2的Django 1.10和1.11版本中,它运行得非常好。希望这对你有帮助。

<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>

撰写回答