我很难理解如何在django中创建动态选择字段。我有一个模型设置如下:
class rider(models.Model):
user = models.ForeignKey(User)
waypoint = models.ManyToManyField(Waypoint)
class Waypoint(models.Model):
lat = models.FloatField()
lng = models.FloatField()
我要做的是创建一个选择字段,其值是与该骑手相关的航路点(这将是登录的人)。
目前我正在重写我的表单中的init,如下所示:
class waypointForm(forms.Form):
def __init__(self, *args, **kwargs):
super(joinTripForm, self).__init__(*args, **kwargs)
self.fields['waypoints'] = forms.ChoiceField(choices=[ (o.id, str(o)) for o in Waypoint.objects.all()])
但所有这些只是列出所有的路线点,它们与任何特定的骑手都没有关联。有什么想法吗?谢谢。
您可以通过将用户传递到表单init来过滤航路点
在启动表单时从您的视图传递给用户
如果是模型形式
问题是当你这样做的时候
在更新请求中,以前的值将丢失!
你的问题有一个内置的解决方案:ModelChoiceField。
通常,当需要创建/更改数据库对象时,尝试使用
ModelForm
总是值得的。在95%的情况下有效,而且比创建自己的实现更干净。相关问题 更多 >
编程相关推荐