Как я могу перезапускать сервер Django каждый раз, когда я что-то меняю в базе данных?
Итак, скажем, я выполнил Model.objects.update() в БД, как я могу заставить сервер Django автоматически перезапускаться? Я использую раскрывающийся фильтр, и когда я обновляю значение с «25» до, скажем, «22», раскрывающийся фильтр по-прежнему отображает «25», пока я не перезапущу сервер вручную. Как я могу это изменить?
Вот моя форма. Я использую django_filters для выпадающего фильтра.
class CSVFilter(django_filters.FilterSet):
entries = CSV5.objects.values_list('gebaeudebereich', flat = True).distinct()
gebaeudebereich_auswahl = [(e, e) for e in entries]
gebaeudebereich = django_filters.ChoiceFilter(choices = gebaeudebereich_auswahl, label = "Gebäudebereich")
entries = CSV5.objects.values_list('gebaeudenummer', flat=True).distinct()
gebaeudenummer_auswahl = [(e, e) for e in entries]
gebaeudenummer = django_filters.ChoiceFilter(choices=gebaeudenummer_auswahl, label = "Gebäudenummer")
entries = CSV5.objects.values_list('ebene', flat=True).distinct()
ebene_auswahl = [(e, e) for e in entries]
ebene = django_filters.ChoiceFilter(choices=ebene_auswahl)
entries = CSV5.objects.values_list('raum', flat=True).distinct()
raum_auswahl = [(e, e) for e in entries]
raum = django_filters.ChoiceFilter(choices=raum_auswahl)
Поскольку я использую раскрывающийся фильтр, и когда я обновляю значение с «25», скажем, до «22», раскрывающийся фильтр по-прежнему отображает «25», пока я не перезапущу сервер вручную.
Тогда это — это проблема, которую нужно исправить. (Это яркий пример проблема XY.) Вы определенно делаете что-то неправильно в этой форме; пожалуйста, напишите код формы.
обновлено. Я не думаю, что с моей формой что-то не так, потому что, когда я фильтрую, ничего не выбирая (отображает все), новое значение просто отсутствует в раскрывающемся списке.
Ну, проблема именно с вашим фильтром, потому что вы делаете запросы на уровне класса, которые вы никогда не должны делать. Но это странный способ построения фильтра; что вы передаете, когда создаете экземпляр? Все дело в том, что фильтр создает набор раскрывающихся списков на основе значений в заданном вами наборе запросов, вам не нужно указывать параметры вручную.
Формы и значения, отображаемые в раскрывающихся списках, создаются только при запуске сервера. Вы, вероятно, не хотите перезапускать runserver
, так как это не произойдет с производственным веб-сервером.
Вместо этого вы захотите переопределить метод __init__
формы и установить там значения для раскрывающегося списка. Вот краткий пример:
class MyForm(forms.form):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["my_field"] = forms.ModelChoiceField(
queryset=MyModel.objects.all(),
)
Удачи!
Почему вы хотите это сделать?