我有一個網站,其中列出了本地遠足。用戶可以「記錄」他們已經完成了這些加息。我有這兩個模型+表單按預期工作。不過,現在爲了記錄遠足,你必須從一個包含數據庫中所有遠足的長列表中選擇遠足。我希望能夠預先填充該字段,以便如果您從相關加息的詳細信息頁面進入,那麼該字段將隨着加息進行填充。基於引用URL預先填充ModelForm字段
下面是一些代碼:
models.py:
model Hike(models.Model):
name = CharField(max_length=255)
slug = models.SlugField(unique=True)
...other fields...
model UserLog(models.Model):
hike = models.ForeignKey(Hike, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
forms.py:
class LogHike(forms.ModelForm):
class Meta:
model = UserLog
fields = ('hike', 'date', ... other fields)
views.py:
def hike_detail(request, slug):
hike = Hike.objects.get(slug=slug)
log = UserLog.objects.filter(hike__slug=slug)
... more stuff here ...
return render(request, 'hikes/hike_detail.html' {
'hike': hike,
'log': log,
})
def log_hike(request):
if request.method == "POST":
form = LogHike(request.POST)
if form.is_valid():
obj = form.save(commit=False)
userid = request.user
obj.user = request.user
obj.save()
return redirect('user_profile', uid=userid.id)
else:
form = LogHike()
return render(request, 'log_hike.html', {'form': form})
因此,如果用戶是查看「hike_detail」視圖,我想要h提供一個鏈接,將它們發送到「log_hike」視圖,但是基於它們來自的「遠足」預先填充了「遠足」字段。我認爲這可能與實例功能有關?但我沒有很多的經驗。有沒有簡單的方法來傳遞引用頁面中的數據以預先填充表單?
這工作!謝謝!我必須將引用鏈接設置爲GET表單,並以這種方式傳遞ID。 – Josh