Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
Django表单和选择字段_Django_Django Models_Django Forms - Fatal编程技术网

Django表单和选择字段

Django表单和选择字段,django,django-models,django-forms,Django,Django Models,Django Forms,我有以下型号: class StraightredTeam(models.Model): teamid = models.IntegerField(primary_key=True) teamname = models.CharField(max_length=36) country = models.CharField(max_length=36,null=True) stadium = models.CharField(max_length=36,null=T

我有以下型号:

class StraightredTeam(models.Model):
    teamid = models.IntegerField(primary_key=True)
    teamname = models.CharField(max_length=36)
    country = models.CharField(max_length=36,null=True)
    stadium = models.CharField(max_length=36,null=True)
    homepageurl = models.TextField(null=True)
    wikilink = models.TextField(null=True)
    teamcode = models.CharField(max_length=5,null=True)
    teamshortname = models.CharField(max_length=24,null=True)
    currentteam = models.PositiveSmallIntegerField(null=True)

    def natural_key(self):
        return self.teamname

    class Meta:
        managed = True
        db_table = 'straightred_team'
我使用此模型的形式如下:

from django import forms
from straightred.models import StraightredTeam

    class SelectTwoTeams(forms.Form):

        currentTeams = StraightredTeam.objects.filter(currentteam = 1).order_by('teamname')
        team_one = forms.ModelChoiceField(queryset = currentTeams, to_field_name = "teamname")
这将生成以下html:

            <form action="" method="post">
                <input type='hidden' name='csrfmiddlewaretoken' value='xyz' />
                <tr><th><label for="id_team_one">Team one:</label></th><td><select id="id_team_one" name="team_one">
<option value="" selected="selected">---------</option>
<option value="Arsenal">StraightredTeam object</option>
<option value="Aston Villa">StraightredTeam object</option>
<option value="Bournemouth">StraightredTeam object</option>
<option value="Chelsea">StraightredTeam object</option>
<option value="Crystal Palace">StraightredTeam object</option>
<option value="Everton">StraightredTeam object</option>
<option value="Leicester">StraightredTeam object</option>
<option value="Liverpool">StraightredTeam object</option>
<option value="Man City">StraightredTeam object</option>
<option value="Man United">StraightredTeam object</option>
<option value="Newcastle">StraightredTeam object</option>
<option value="Norwich">StraightredTeam object</option>
<option value="Southampton">StraightredTeam object</option>
<option value="Stoke">StraightredTeam object</option>
<option value="Sunderland">StraightredTeam object</option>
<option value="Swansea">StraightredTeam object</option>
<option value="Tottenham">StraightredTeam object</option>
<option value="Watford">StraightredTeam object</option>
<option value="West Brom">StraightredTeam object</option>
<option value="West Ham">StraightredTeam object</option>
</select></td></tr>
                <input type="submit" value="Submit" />
            </form>
我希望StraightredTeam对象显示与值部分相同的内容。即足球队/足球队的名称


任何给我指出正确方向的建议都是理想的,非常感谢,Alan。

选择标签是在django表单中通过将对象转换为unicode python 2.x或字符串python 3.x创建的。如果您想在这里显示teamname,只需创建_unicode__Python2.x,您还可以创建uuu str_uuu方法,并使用从django.utils.encoding导入的python_u2_uUnicode_uCompatible来装饰对象,这样它将与python 2.x和3.x或uuu str_uuuuPython 3.x方法兼容,该方法将返回字符串以显示为选择标签。

选择标签是通过将对象转换为unicode在django表单中创建的python 2.x或字符串python 3.x。如果您想在这里显示teamname,只需创建_unicode__Python2.x,此外,您还可以创建uuu str_uuu方法,并使用从django.utils.encoding导入的python_u2_uUnicode_u兼容来装饰对象,这样它将与python 2.x和3.x或uuu str_uuuPython 3.x方法兼容,这些方法将返回字符串以显示为选择标签。

如果您在计算机上使用python 3,则需要定义一个uu unicode_ustru_u方法或u模型

class StraightredTeam(models.Model):
    ...
    def __unicode__(self):   # __str__ on Python 3
        return self.teamname
但是请注意,您不应该在字段定义中使用to_field_name属性。默认设置是使用ID,这是允许Django正确设置外键的正确值。

如果您在模型上使用Python 3,则需要定义一个uuu unicode方法或u str

class StraightredTeam(models.Model):
    ...
    def __unicode__(self):   # __str__ on Python 3
        return self.teamname

但是请注意,您不应该在字段定义中使用to_field_name属性。默认设置是使用ID,这是允许Django正确设置外键的正确值。

一般来说,经验法则是,如果两个答案都正确-最老的答案通常会被选为答案。一般来说,经验法则是,如果两个答案都是正确的,最老的答案通常会被选为答案