我知道Django会为每个创建的模型自动创建一个唯一的ID。例如这样的
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('email', models.EmailField(max_length=50)),
('language', models.CharField(choices=[('ur-PK', 'Urdu'), ('en-US', 'English')], max_length=15)),
],
但是我想在views.py
文件中获得此ID。我怎样才能做到这一点?我正在使用Django模型表格输入数据。
我尝试过
request.POST['id']
但是会引发错误
MultiValueDictKeyError位于/
'id'
编辑 Views.py代码
def home(request):
if request.method == 'POST':
form = uploadForm(request.POST)
print(request.POST['id'])
lang=request.POST['language']
if form.is_valid():
#save form
答案 0 :(得分:1)
在request.POST中,您将不会获得ID,因为该记录尚未保存。这样吧
def home(request):
if request.method == 'POST':
form = uploadForm(request.POST)
if form.is_valid():
record = form.save()
print(record.id) # this will print id
print(record.language)
答案 1 :(得分:0)
您需要在urls.py中实现它,例如:
path('<id>/', RecordDetails.as_view(), name='record_details')
对于您的代码,可以从'request'或'kwargs'中获取它,例如:
class RecordDetails(generics.RetrieveAPIView):
"""
API endpoint that allows users to be viewed or edited.
"""
lookup_field = 'id'
def get_queryset(self):
request_id = int(self.kwargs['id'])
queryset = Model.objects.filter(id=request_id)
return queryset