![](/img/trans.png)
[英]Is it possible to get the value from an option in the drop down list in django?
[英]Interactive drop down list django with option to add new entry
我对 django 比较陌生。 我制作了一个简单的应用程序,使用户能够记录有关运行(活动)的详细信息。 用户使用 django ModelForm 输入数据,例如:距离、时间、路线名称、运行日期等。
我有一个 ModelForm,它使登录的用户能够将 Activity 添加到 model 数据库。
我如何获得表格以添加 model 数据库中已经存在的所有路线的下拉列表,如果人员正在输入有关他们以前没有运行过的路线的数据,则添加新路线。?
class Person(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
fName = models.CharField(max_length =100)
lName = models.CharField(max_length =100)
weight = models.FloatField()
sex = models.CharField(max_length=10)
def __str__(self):
return self.lName
class Activity(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
length = models.FloatField()
runTime = models.DurationField()
route = models.CharField(max_length=100)
ave = models.DurationField()
dateRun = models.DateField()
marathon = models.DurationField()
def __str__(self):
return self.route ```
我会在 models.py 中添加 model Route:
class Person(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
fName = models.CharField(max_length=100)
lName = models.CharField(max_length=100)
weight = models.FloatField()
sex = models.CharField(max_length=10)
def __str__(self):
return self.lName
class Route(model.model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
length = models.FloatField()
route = models.CharField(max_length=100)
class Activity(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
runTime = models.DurationField()
route = models.ForeignKey(Route, on_delete=models.CASCADE)
ave = models.DurationField()
dateRun = models.DateField()
marathon = models.DurationField()
def __str__(self):
return self.route
当人想要添加活动时,他将拥有他之前输入的所有路线。 该解决方案需要在模型表单中进行额外的工作,并且需要另一种表单来添加新路线。 我认为 ActivityForm 应该是这样的:
class ActivityForm(forms.ModelForm):
class Meta:
model = Activity
fields = '__all__'
widgets = {'person': forms.HiddenInput}
并在views.py中初始化它:
form = ActivityForm(initial={'person': request.user.id})
form.field['route'].queryset = Route.objects.filter(person=request.user)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.