Queryset не обновляется в форме - PullRequest
0 голосов
/ 08 февраля 2020

Я пробовал это , но, похоже, у меня не работает. Моя форма обновляет варианты, когда я запускаю сервер, но позже, когда я добавляю новую остановку, она не отображается в списке в форме маршрутов.

models.py

class Route(models.Model):
    DIRECTION_CHOICES = [
        (True, "UP"),
        (False, "Down")
    ]
    STATUS_CHOICES = [
        (True, "Active"),
        (False, "Inactive")
    ]
    TYPE_CHOICES = [
        (True, "AC"),
        (False, "General")
    ]
    name = models.CharField(verbose_name="Route Name", unique=True, blank=False, null=False, max_length=50)
    direction = models.BooleanField(verbose_name="Direction", null=False, blank=False, choices=DIRECTION_CHOICES)
    status = models.BooleanField(verbose_name="Status", null=False, blank=False, choices=STATUS_CHOICES)
    list_of_stops = models.TextField(verbose_name="Stops", null=False, blank=False)
    type = models.BooleanField(verbose_name="Type", null=False, blank=False, choices=TYPE_CHOICES)


class Stop(models.Model):
    name = models.CharField(verbose_name="Name", unique=True, blank=False, null=False, max_length=50)
    latitudes = models.DecimalField(verbose_name="Latitudes", max_digits=9, decimal_places=6)
    longitudes = models.DecimalField(verbose_name="Longitudes", max_digits=9, decimal_places=6)

Я не Я не думаю, что есть какие-либо проблемы с представлением, но я могу добавить его, если вы думаете, что есть какие-либо

forms.py

class RouteForm(forms.ModelForm):
    stops = [(stop.name, stop.name) for stop in Stop.objects.all()]
    list_of_stops = forms.MultipleChoiceField(choices=stops, required=False)

    class Meta:
        model = Route
        fields = ('name', 'direction', 'status', 'type')

Может кто-нибудь сказать мне, что я делаю неправильно?

1 Ответ

2 голосов
/ 08 февраля 2020

Попробуйте вместо этого использовать ModelMultipleChoiceField:

list_of_stops = forms.ModelMultipleChoiceField(queryset=Stop.objects.all(), required=False)

Код внутри класса формы запускается только один раз при запуске django, поэтому список stops = [(stop.name, stop.name) for stop in Stop.objects.all()] не обновляется динамически.

...