2015-02-18 5 views
0

Что мне нужно знать, как это сделать, это перезагрузить модуль модели. Мне нужно автоматизировать перезапуск сервера manage.py runserver или что бы он ни делал, чтобы перезагрузить модели. ИЛИ, мне нужно знать лучший способ делать динамические параметры. Тем не менее, то, что у меня здесь, работает, единственная проблема заключается в том, что я должен перезапустить сервер для выбора вариантов перезагрузки в модель. Все примеры с использованием imp.reload НЕ работают. Здесь все более подробно:Динамический выбор Django в форме, которая сохраняется

Я пытаюсь найти лучший способ реализовать поле модели с помощью 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, однако это, похоже, не работает. Есть идеи?

EDIT:

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

Вы пытаетесь управлять связью между одной вещью, и вещи, которые могут динамически изменять. Лучший способ это просто эта модель с использованием моделей 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) 

Нет необходимости перезагрузки сервер, все проверки проверяются с использованием базы данных и моделей.

+0

Как это решить проблемы с несколькими вариантами выбора для одного поля? – Jeremy

+0

Я не видел этого требования, в этом случае просто используйте «ManyToManyField» –

+0

. Я думаю, что это может сработать, но он немного запутан, когда я пытаюсь что-либо сохранить. Документация на [django] (https://docs.djangoproject.com/en/1.7/) довольно ужасна при объяснении того, как сохранить несколько m2m в одной модели. – Jeremy

Смежные вопросы