gpt4 book ai didi

Python Django 表单多选 HTML 输出

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:49 25 4
gpt4 key购买 nike

我正在尝试从我的模型中输出描述字段以 django 形式没有喜悦。

四处寻找并没有找到我需要的东西希望可以在这里提问。

这是我的模型、表单、模板和模板输出。为了让这篇文章更加简洁,我进行了缩略。

我正在处理这个项目中的 View ,所以模型已由其他人设计,我无法真正更改它。

模型:

1)

from django.db import models  

class Project(models.Model):
description = models.TextField(blank = True)
name = models.CharField(max_length = 255, blank = True)

def __unicode__(self):
""" String representation of projects. """
return unicode(self.name)

2)

from django.db import models

class Share(models.Model):

description = models.TextField
last_access = models.DateTimeField(auto_now = True)
location = models.URLField(verify_exists = False)
project = models.ForeignKey('Project', related_name = 'shares')

def __unicode__(self):
return unicode(self.location)

表格:

from django import forms
from models import Share

class ExportForm(forms.Form):
ps = forms.ModelMultipleChoiceField(queryset=Share.objects.filter(project=1),widget=forms.SelectMultiple())

查看:

form = ExportForm()

模板:

我用这个来输出多个选择 bos:

{{ form.ps }}

模板输出:

<select multiple="multiple" name="ps" id="id_ps">  
<option value="11">Share object </option>
<option value="10">Share object </option>
</select>

我已经通过搜索尝试了几种方法,但不能似乎能够在其中创建“描述”字段而不是“共享对象”

非常感谢任何建议。

谢谢!

最佳答案

最简单的方法是更改​​ Share 模型的 __unicode__ 方法以返回描述而不是位置,但是既然你说你不能更改模型,你将需要子类化 ModelMultipleChoiceField 并覆盖 label_from_instance 方法。

class MyModelMultipleChoiceField(forms.ModelMultipleChoiceField):
def label_from_instance(self, obj):
return obj.description

这解释了in the documentation .

关于Python Django 表单多选 HTML 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4265003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com