Queryset不会在表单上更新

问题描述 投票:0回答:1

我已经尝试过this,但它似乎对我不起作用。运行服务器时,我的表单会更新选择,但是稍后添加新的站点时,它不会显示在路线表单的列表中。

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')

有人可以告诉我我在做什么错吗?

python django django-forms django-crispy-forms
1个回答
1
投票

尝试改用ModelMultipleChoiceField

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

在django启动时,表单类内的代码仅运行一次,因此stops = [(stop.name, stop.name) for stop in Stop.objects.all()]列表不会动态更新。

© www.soinside.com 2019 - 2024. All rights reserved.