Python 表单字段| Django |模型选择字段

Python 表单字段| Django |模型选择字段,python,django,forms,Python,Django,Forms,我找不到我问题的答案,所以我问你们。 我正在尝试使用ModelChoiceField生成表单,所有工作都没有给出错误,但仍然没有得到任何字段/选项空白选择,并且无法选择某些内容。 这是我的密码 models.py class Search(models.Model): name = models.CharField(max_length=30) email = models.EmailField(max_length=30) def __str__(self): ret

我找不到我问题的答案,所以我问你们。 我正在尝试使用ModelChoiceField生成表单,所有工作都没有给出错误,但仍然没有得到任何字段/选项空白选择,并且无法选择某些内容。 这是我的密码

models.py

class Search(models.Model):
  name = models.CharField(max_length=30)
  email = models.EmailField(max_length=30)

  def __str__(self):
      return self.name
forms.py

class MyModelChoiceField(ModelChoiceField):
  def label_from_instance(self, obj):
    return "My Object #%i" % obj.id

class SearchForm(forms.Form):
  search_text = forms.CharField(max_length=50)
  wybor = MyModelChoiceField(queryset= Search.objects.all())
有什么想法吗?

试试这个:

def label_from_instance(obj):
    return "My Object #%i" % obj.id

self.fields['wybor'].label_from_instance = label_from_instance

确保搜索表中有数据。要测试此视图,请尝试以下操作:

from django.shortcuts import render
from django.forms import ModelChoiceField
from django import forms
from models import Search


class MyModelChoiceField(ModelChoiceField):
    def label_from_instance(self, obj):
        return "My Object #%i" % obj.id

class SearchForm(forms.Form):
    search_text = forms.CharField(max_length=50)
    wybor = MyModelChoiceField(queryset=Search.objects.all())


def test_view(request):

    f = SearchForm()

    ids = Search.objects.values_list('id', flat=True)

    return render(request, 'yourapp/test.html',
                      {
                          'form': f,
                          'ids': ids
                      })
test.html模板:

{{ form }}

<br/>

search ids:

{{ ids }}
好的,我想我有这个。 我在文档中发现:

from django.db import models

class Person(models.Model):
SHIRT_SIZES = (
    ('S', 'Small'),
    ('M', 'Medium'),
    ('L', 'Large'),
)
name = models.CharField(max_length=60)
shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)

它的工作显示和一个表单是有效的:我希望这将在下一步工作。

我得到了这个:名称错误:名称“self”没有定义嘿,只有我得到的是:搜索ID:[],这意味着你的表是空的。。。尝试添加一些数据:就像我18小时前回答的那样,我在文档中找到了其他解决方案:
from django.db import models

class Person(models.Model):
SHIRT_SIZES = (
    ('S', 'Small'),
    ('M', 'Medium'),
    ('L', 'Large'),
)
name = models.CharField(max_length=60)
shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)