繁体   English   中英

如何保存从数据库生成的列表到Django模型字段?

[英]How save a list generate from database to a django model field?

好的,我对此很感兴趣,我有两个模型,第一个模型是从settings.py中已安装的应用程序自动生成的,但是我需要这个已安装的应用程序出现在Institution模型中,因为每个Institution都会有不同的应用程序,我可以不要使用ManyToMany字段选项。 这是我的models.py:

class Module(models.Model):
    name = models.CharField(max_length=25)
    enabled = models.BooleanField(default=False)

class Institution(models.Model):
    name = models.CharField(max_length=25)
    module = models.TexField(null=True, blank=True)

根据机构/views.py中已安装的应用程序自动生成列表

from settings import INSTALLED_APPS as tuple_apps         

def search_update_modulo():
    list_of_apps = [x for x in tuple_apps if "apps" in x]
    institution_module = []
    for i in list_of_apps:
        i = i[5:]
        if i != "persons":
            institution_module.append(i)
    modules_in_db = Module.objects.all().count()
    if modulos_en_bd < len(modulos_instituciones):
        m = modulo.objects.all().delete()
        for x in modulos_instituciones:
            m = modulo(nombre=str(x).title())
            m.save()

在机构模板中,我通过以下方式发送已安装应用程序的列表:

{% for m in module_list %}
  <tr class="cursor">
    <td >{{ m }}</td>
    <td > <input id="id_habilitado" name="habilitado" type=checkbox {% if m.habilitado %} checked {% endif %}   value=""> </td>
  </tr>
{% endfor %}

现在我的问题是,我如何才能从模板中检索值,然后隐式存储在列表中,然后将其保存在Institution模型中的模块字段中,或者通过其他任何方式来解决此问题。 我将不胜感激。 Thaks

如果仅在自动生成列表时保存模块对象,则可以在模型类Module(models.Model)中具有post.save信号,该信号可以检测模块是否已启用,然后可以将该字段保存到Institution字段中。

像这样:

class Module(models.Model):
    name = models.CharField(max_length=25)
    enabled = models.BooleanField(default=False)

def update_institution(sender, instance, **kwargs):
     if instance.enabled:
         # Some code here to append the module 
         # to an institution 
         # Institution.module.list(append(instance)

# register the signal
post_save.connect(update_institution, sender=Module, dispatch_uid="update_institution_modules")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM