我对django有点陌生,我需要为modelform字段设置一个动态初始值。我的模型名为'author'中有一个数据库字段,它有一个foreignkey将它连接到django用户模型。每当用户在表单中填写信息时,我需要自动将其设置为当前用户。
根据我收集到的关于这个问题的信息,我必须在下面的MyHouseEditForm中定义一个__init__
函数,我是django的新手,我看到的所有示例都非常混乱。在
在表单.py在
from django import forms
from django.contrib.auth.models import User
from .models import Myhouses
class MyHouseEditForm(forms.ModelForm):
class Meta:
model = Myhouses
fields = ('author','name_of_accomodation', 'type_of_room', 'house_rent', 'availability', 'location', 'nearest_institution', 'description', 'image')
我需要在用户登录时将'author'的值设置为当前用户。在
在模型.py在
^{pr2}$在视图.py在
@login_required
def addlisting(request):
if request.method == 'POST':
form = MyHouseEditForm(request.POST, files=request.FILES)
if form.is_valid():
Houses = form.save(commit=False)
Houses.save()
return redirect('addlisting')
else:
form = MyHouseEditForm()
return render(request, 'houses/addlisting.html', {'form':form })
不需要在表单中显示作者字段。它将自动填充登录用户。在
请求.用户提供登录用户对象。因此,您可以从表单字段部分删除“author”字段并执行以下操作:
我在序列化程序中做了类似的事情。在
我定义了如下自定义创建方法:
如果使用更常规的模型序列化程序,这应该不重要。在
相关问题 更多 >
编程相关推荐