Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 外键显示为下拉列表。有没有办法将其显示为文本值?(django)_Python_Django - Fatal编程技术网

Python 外键显示为下拉列表。有没有办法将其显示为文本值?(django)

Python 外键显示为下拉列表。有没有办法将其显示为文本值?(django),python,django,Python,Django,在我的应用程序中,在第1页,我创建了一个项目对象,然后在第2页,我创建了一个批处理对象。 “批处理”对象与“项目”具有多对一关系。 因此,在调用批处理表单时,它需要显示项目对象 我可以在批处理表单上显示项目对象,但它显示为下拉列表。 我希望它显示为字段值,但它不起作用。 你能帮忙吗。 谢谢 models.py Class Project name = models.CharField() Class Batch name = models.CharField() project = model

在我的应用程序中,在第1页,我创建了一个项目对象,然后在第2页,我创建了一个批处理对象。 “批处理”对象与“项目”具有多对一关系。 因此,在调用批处理表单时,它需要显示项目对象

我可以在批处理表单上显示项目对象,但它显示为下拉列表。 我希望它显示为字段值,但它不起作用。 你能帮忙吗。 谢谢

models.py

Class Project
name = models.CharField()

Class Batch
name = models.CharField()
project = models.ForeignKey('Project', on_delete=models.CASCADE)
template.py

<a href="{% url 'create_batch_url' pk=project.id %}" role="button" >Link to Batch</a>
forms.py

class BatchForm(ModelForm):

class Meta:
        model = Batch
        fields = ('name', 'project',)

def __init__(self, *args, **kwargs):
        self.request = kwargs.pop("request")
        project_id = kwargs.pop("project_id")

        #Only show the project where the request came from
        self.fields['project'].queryset = Project.objects.filter(id=project_id)

您需要在表单meta中添加一个
widgets
变量

从django.forms导入文本输入
类BatchForm(ModelForm):
类元:
型号=批次
字段=('name','project',)
widgets={'project':TextInput}
定义初始化(self,*args,**kwargs):
self.request=kwargs.pop(“请求”)
project\u id=kwargs.pop(“project\u id”)
#仅显示请求来自的项目
self.fields['project'].queryset=project.objects.filter(id=project\u id)

如果您将
project=forms.CharField()
添加到模型表单中会怎么样?尝试过了。表单显示一个空字符域。我不知道如何将project对象填充到此charField()中。请尝试以下操作:project=ModelChoiceField(project.objects.filter(id=project\u id)),但仍然显示下拉列表而不是文本字段。这确实将project显示为文本字段标记,但字段为空。(项目对象为空)我的模板只是一个带有{form}的表。@Umair您必须在视图中提供初始数据。最初的帖子没有提供视图代码,所以我不能提供细节,但是像
form=BatchForm(initial={'project':project_id})
这样的行应该可以。
simple view which calls the model form
class BatchForm(ModelForm):

class Meta:
        model = Batch
        fields = ('name', 'project',)

def __init__(self, *args, **kwargs):
        self.request = kwargs.pop("request")
        project_id = kwargs.pop("project_id")

        #Only show the project where the request came from
        self.fields['project'].queryset = Project.objects.filter(id=project_id)