Django

Code

Changeset 2472

Show
Ignore:
Timestamp:
03/02/06 04:05:09 (3 years ago)
Author:
russellm
Message:

magic-removal: Modified model validation error messages to suggest a way of fixing name clash problems.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/magic-removal/django/core/management.py

    r2470 r2472  
    848848                rel_opts = f.rel.to._meta 
    849849                if f.rel.to not in models.get_models(): 
    850                      e.add(opts, "'%s' relates to uninstalled model %s" % (f.name, rel_opts.object_name)) 
     850                     e.add(opts, "'%s' has relation with uninstalled model %s" % (f.name, rel_opts.object_name)) 
    851851 
    852852                rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name() 
    853853                for r in rel_opts.fields: 
    854854                    if r.name == rel_name: 
    855                         e.add(opts, "'%s' accessor name '%s.%s' clashes with another field" % (f.name, rel_opts.object_name, r.name)) 
     855                        e.add(opts, "'%s' accessor name '%s.%s' clashes with another field. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) 
    856856                for r in rel_opts.many_to_many: 
    857857                    if r.name == rel_name: 
    858                         e.add(opts, "'%s' accessor name '%s.%s' clashes with a m2m field" % (f.name, rel_opts.object_name, r.name)) 
     858                        e.add(opts, "'%s' accessor name '%s.%s' clashes with a m2m field. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) 
    859859                for r in rel_opts.get_all_related_many_to_many_objects(): 
    860860                    if r.get_accessor_name() == rel_name: 
    861                         e.add(opts, "'%s' accessor name '%s.%s' clashes with a related m2m field" % (f.name, rel_opts.object_name, r.get_accessor_name())) 
     861                        e.add(opts, "'%s' accessor name '%s.%s' clashes with a related m2m field. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) 
    862862                for r in rel_opts.get_all_related_objects(): 
    863863                    if r.get_accessor_name() == rel_name and r.field is not f: 
    864                         e.add(opts, "'%s' accessor name '%s.%s' clashes with a related field" % (f.name, rel_opts.object_name, r.get_accessor_name())) 
     864                        e.add(opts, "'%s' accessor name '%s.%s' clashes with another related field. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) 
    865865 
    866866        for i, f in enumerate(opts.many_to_many): 
     
    874874            for r in rel_opts.fields: 
    875875                if r.name == rel_name: 
    876                     e.add(opts, "'%s' m2m accessor name '%s.%s' clashes with another field" % (f.name, rel_opts.object_name, r.name)) 
     876                    e.add(opts, "'%s' m2m accessor name '%s.%s' clashes with another field. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) 
    877877            for r in rel_opts.many_to_many: 
    878878                if r.name == rel_name: 
    879                     e.add(opts, "'%s' m2m accessor name '%s.%s' clashes with a m2m field" % (f.name, rel_opts.object_name, r.name)) 
     879                    e.add(opts, "'%s' m2m accessor name '%s.%s' clashes with a m2m field. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name)) 
    880880            for r in rel_opts.get_all_related_many_to_many_objects(): 
    881881                if r.get_accessor_name() == rel_name and r.field is not f: 
    882                     e.add(opts, "'%s' m2m accessor name '%s.%s' clashes with a related m2m field" % (f.name, rel_opts.object_name, r.get_accessor_name())) 
     882                    e.add(opts, "'%s' m2m accessor name '%s.%s' clashes with a related m2m field. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) 
    883883            for r in rel_opts.get_all_related_objects(): 
    884884                if r.get_accessor_name() == rel_name: 
    885                     e.add(opts, "'%s' m2m accessor name '%s.%s' clashes with a related field" % (f.name, rel_opts.object_name, r.get_accessor_name())) 
     885                    e.add(opts, "'%s' m2m accessor name '%s.%s' clashes with another related field. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name)) 
    886886 
    887887        # Check admin attribute.