【发布时间】:2021-02-26 19:16:58
【问题描述】:
我遇到的问题是我正在尝试创建一个表单,该表单通过将当前登录的用户 ID 嵌入到 ModelForm 的隐藏字段中来传递它。
模型.py
class UserPhotos(models.Model):
user = models.ForeignKey(NewUser, on_delete=models.CASCADE)
#photos = models.ImageField(height_field=1350, width_field=1080)
description = models.CharField(max_length=200)
date = models.DateTimeField(auto_now=True)
class Meta:
'''Change plural name'''
verbose_name_plural = 'Photos'
Forms.py
class AddPhotos(forms.ModelForm):
user = forms.CharField(widget = forms.HiddenInput(), required=False)
class Meta:
model = UserPhotos
fields = (
'description','user',
)
Views.py
def add_photo(request):
context = {}
user = request.user
if not user.is_authenticated:
return redirect('my_app:login',)
if request.POST:
form = AddPhotos(request.POST)
if form.is_valid():
form.save(commit=False)
form.user=request.user
form.save
return redirect('/')
else:
context['photoAdd_form'] = form
else:
form = AddPhotos()
context['photoAdd_form'] = form
return render(request, 'main/photo_add.html', context)
我尝试过类似这样的方法,但我不知道如何将 ID 传递给 init。它给了我一个错误: /add 处的 KeyError '用户ID'
Forms.py
...
def __init__(self, *args, **kwargs): #It is works but how will i pass the data
request = kwargs.pop('userId')
print(request)
super(AddPhotos, self).__init__(*args, **kwargs)
self.fields['user'].initial = request.user
Views.py
def add_photo(request):
context = {}
user = request.user
if not user.is_authenticated:
return redirect('my_app:login',)
if request.POST:
form = AddPhotos(request.POST, userId = request.user.id)
...
【问题讨论】:
-
如果您可以自己解决问题,请将您的答案作为答案发布,而不是作为对问题的编辑。完全没问题,回答自己的问题! ;)
标签: django forms view django-views django-forms