我需要知道的是重新加载模型模块。我需要自动重启服务器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
答案 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)
无需重新启动服务器,所有验证都将使用数据库和模型。