Kaydet (Commit) ef889d5b authored tarafından Morgan Aubert's avatar Morgan Aubert Kaydeden (comit) Tim Graham

Fixed #27599 -- Fixed Field.__str__() crash for fields not attached to models.

üst 3be22689
......@@ -186,7 +186,12 @@ class Field(RegisterLookupMixin):
self.error_messages = messages
def __str__(self):
""" Return "app_label.model_label.field_name". """
"""
Return "app_label.model_label.field_name" for fields attached to
models.
"""
if not hasattr(self, 'model'):
return super(Field, self).__str__()
model = self.model
app = model._meta.app_label
return '%s.%s.%s' % (app, model._meta.object_name, self.name)
......
from django import forms
from django.db import models
from django.test import SimpleTestCase, TestCase
from django.utils.encoding import force_str
from .models import (
Foo, RenamedField, VerboseNameField, Whiz, WhizIter, WhizIterEmpty,
......@@ -56,8 +55,10 @@ class BasicFieldTests(TestCase):
self.assertIsInstance(field.formfield(choices_form_class=klass), klass)
def test_field_str(self):
f = models.Field()
self.assertEqual(str(f), '<django.db.models.fields.Field>')
f = Foo._meta.get_field('a')
self.assertEqual(force_str(f), 'model_fields.Foo.a')
self.assertEqual(str(f), 'model_fields.Foo.a')
def test_field_ordering(self):
"""Fields are ordered based on their creation."""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment