我有一个网站,其中列出了本地远足。用户可以“记录”他们已经完成了这些加息。我有这两个模型+表单按预期工作。不过,现在为了记录远足,你必须从一个包含数据库中所有远足的长列表中选择远足。我希望能够预先填充该字段,以便如果您从相关加息的详细信息页面进入,那么该字段将随着加息进行填充。基于引用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