![](/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.