持续存在的Django动态选择

时间:2015-02-18 03:50:51

标签: jquery ajax django python-3.x django-1.7

我需要知道的是重新加载模型模块。我需要自动重启服务器manage.py runserver或其他重新加载模型的操作。或者,我需要知道更好的方法来做动态选项。但是,我在这里工作,唯一的问题是我必须重新启动manage.py runserver服务器以便重新加载到模型中。使用imp.reload的所有示例都不起作用。以下是更深入的内容:

我正在尝试使用MultiSelectField找到实现模型字段的最佳方法,该方法允许用户在前端输入动态选择。选择看起来就像他们在jsFiddle中所做的那样。

<div class="row ">
<ul id="id_field">

  <div class="col-lg-6" style="width:100%;">
    <div class="input-group">
      <span class="input-group-addon">
        <label for="id_field_0">
          <input id="id_field_0" type="checkbox" aria-label="..." name="field_0" value="0">
        </label>
      </span>
      <label type="text" class="form-control" style="height: auto; !important;" aria-label="..." >option 0</label>
    </div><!-- /input-group -->
  </div><!-- /.col-lg-6 -->

  ...

  <div class="col-lg-6" style="width:100%;">
    <div class="input-group">
      <span class="input-group-addon">
        <label for="id_field_4">
          <input id="id_field_4" type="checkbox" aria-label="..." name="field_4" value="4">
        </label>
      </span>
      <label type="text" class="form-control" style="height: auto; !important;" aria-label="..." >option 4</label>
    </div><!-- /input-group -->
  </div><!-- /.col-lg-6 -->

</ul>
</div><!-- /.row -->  
Enter new option: <input></input>

我想通过提交新选项使用jQuery发送ajax请求。然后django应用程序会在我的家庭应用程序中的模型中保存一个选项:

因此,每次重新启动服务器时,模型问题都会更新,因为它会从其他模型中提取其选项。这有点像黑客,但似乎没有一个非常干净的独特方式来做到这一点(我已经看到Django 1.7 / Python 3.4)。我一直在阅读我可能能够使用imp.reload重新加载模型模块,但是,这似乎不起作用。有什么想法吗?

编辑:

models.py:

class garbage_choices(models.Model):
    text = models.CharField(max_length=100)

class model_with_dynamic_choices(models.Model):
    garbage = models.ManyToManyField(garbage_choices)

views.py:

if request.POST:
    if context['model_with_dynamic_choices'].is_valid():
        tmp = context[form].save(commit=False)
        # somehow add all the choices from the html form???
        tmp.save()
        tmp.save_m2m

1 个答案:

答案 0 :(得分:0)

您正在尝试管理一件事与可以动态变化的事物之间的关系。使用Django模型对其进行建模并将其存储在数据库中的最佳方式是:

class MyDynamicChoices(models.Model):
    value = models.CharField(max_length=100)
    text = models.CharField(max_length=100)

class questions(models.Model):
    field_1 = ForeignKey(MyDynamicChoices)

如果您需要为多个选项建模,请使用ManyToManyField

class MyDynamicChoices(models.Model):
    value = models.CharField(max_length=100)
    text = models.CharField(max_length=100)

class questions(models.Model):
    field_1 = ManyToManyField(MyDynamicChoices)

无需重新启动服务器,所有验证都将使用数据库和模型。