我正在尝试找到存储创建对象的用户的方式,我想自动执行此操作。我找到了一些东西,但没有什么对我有用。这是代码:
Models.py:
class Track(models.Model):
...
usuari = models.ForeignKey(User)
Forms.py:
class TrackForm(forms.ModelForm):
class Meta:
model = Track
Views.py
def pujar_track(request):
if request.method=='POST':
formulari = TrackForm(request.POST, request.FILES)
if formulari.is_valid():
formulari.save()
return HttpResponseRedirect('/inici')
else:
formulari = TrackForm()
return render(request,'principal/trackForm.html',
{'formulari':formulari})
我见过put:
usuari = models.ForeignKey(User, blank=True, editable=False) but
但我不知道何时可以在该字段中设置用户。
感谢您的建议!
答案 0 :(得分:3)
您可以隐藏usuari
中的TrackForm
,因此用户无法选择它:
class TrackForm(forms.ModelForm):
class Meta:
model = Track
exclude = ('usuari',)
然后,将您的formulari.save()
替换为:
track = formulari.save(commit=False)
track.user = request.user
track.save()
这是一个常见的用例,详见Django docs。