模型选择字段 - 获取编号

问题描述:

我忙于试图仅以整型格式获取编号,最好是ModelChoiceField。我得到列表显示,但得到的返回字符串格式。请帮助我检索ModelChoiceField的ID。我认为我需要这样做。模型选择字段 - 获取编号

forms.py 
class ProjectForm(forms.ModelForm): 
    items = forms.ModelChoiceField(queryset=Project.objects.all()) 

    class Meta: 
     model = Project 
     fields = ['items'] 

models.py 
class Project(models.Model): 
    items = models.IntegerField(default=0, blank=True, null=True) 

views.py 
def ProjectView(request): 
    form = ProjectForm(request.POST) 

    if request.method == 'POST': 
     if form.is_valid(): 
      save_it = form.save(commit=False) 
      save_it.save() 
      return HttpResponseRedirect('/')  
    else: 
     form = ProjectForm() 

return render(request, 't.html', {'form': form }) 
+0

我不明白你在这里试图解决什么问题。什么列表显示在哪里?什么是以字符串格式返回的? – Sayse

+0

您可以告诉我们您在这里要做什么,因为您的模型和表单没有意义。 –

+0

项目列表的下拉列表显示在项目变量中。我试图获取queryset = Project.objects.all()的id并将其发送到模型。 –

从我可以告诉,items绝不应该是一个IntegerField。您的使用已经将其设置为一名ForeignKeyProject所以你只要做出明确

items = models.ForeignKey('self', null=True, blank=True) 

可能比项目更好的描述性名称。

然后,您不需要在窗体上定义任何内容,它只是成为标准模型窗体,具有标准模型窗体用法。

+0

好的,谢谢。这是我最初尝试的,它的工作。但是,假设我将项目用作项目模型中多个变量的查找表?然后查找表将不起作用。 –

+0

@CodingBear - 这没有任何意义......听起来您需要重新考虑您的实际使用情况以及您的模型如何促进这一点。 – Sayse

+0

谢谢@Sayse。那么我将如何执行查找表呢? –