我已经尝试过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')
有人可以告诉我我在做什么错吗?
尝试改用ModelMultipleChoiceField
:
list_of_stops = forms.MultipleChoiceField(queryset=Stop.objects.all(), required=False)
在django启动时,表单类内的代码仅运行一次,因此stops = [(stop.name, stop.name) for stop in Stop.objects.all()]
列表不会动态更新。