【问题标题】:Displaying foreign key attributes in ModelForm Django在 ModelForm Django 中显示外键属性
【发布时间】:2015-10-04 07:32:29
【问题描述】:

型号:

class Company(models.Model):
    id = models.AutoField(primary_key = True)
    name = models.CharField(max_length = 30)
    parent = models.ForeignKey('self', null=True, blank=True)

表格:

class CompanyForm(forms.ModelForm):

    class Meta:
        model = Company
        fields = ['name', 'parent']

当我查看表单的“父级”下拉列表时,我得到一个对象列表:

  • 公司对象
  • 公司对象
  • 公司对象
  • 公司对象

我想在下拉列表中显示对象的名称:

  • 联合利华
  • 通用磨坊
  • 牛皮纸
  • yoplait

我需要添加哪些代码行?

【问题讨论】:

    标签: django django-forms modelform


    【解决方案1】:

    您必须实现__unicode__ legacy 方法,或者如果您是最新的,您将实现__str__ 方法,将类装饰为python2compatible seen in the django 1.11 docs:

    from django.utils.encoding import python_2_unicode_compatible
    
    
    @python_2_unicode_compatible
    class Company(models.Model):
        id = models.AutoField(primary_key = True)
        name = models.CharField(max_length = 30)
        parent = models.ForeignKey('self', null=True, blank=True)
    
        def __str__(self):
            return '%s' % self.name
    

    在 2019 年,你可能/希望在 python3 中开始你的项目,并且能够省略所有 python 2/3 兼容性的东西。

    【讨论】:

      【解决方案2】:

      处理方式略有不同in this post。在这里,他们将类的 str 属性设置为他们想要显示的字段的值。不过,不确定这是否有副作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-07
        • 2013-09-05
        • 1970-01-01
        • 2011-10-23
        相关资源
        最近更新 更多