mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	* Removed `Manipulator`, `AutomaticManipulator`, and related classes.
 * Removed oldforms specific bits from model fields:
   * Removed `validator_list` and `core` arguments from constructors.
   * Removed the methods:
     * `get_manipulator_field_names`
     * `get_manipulator_field_objs`
     * `get_manipulator_fields`
     * `get_manipulator_new_data`
     * `prepare_field_objs_and_params`
     * `get_follow`
   * Renamed `flatten_data` method to `value_to_string` for better alignment with its use by the serialization framework, which was the only remaining code using `flatten_data`.
 * Removed oldforms methods from `django.db.models.Options` class: `get_followed_related_objects`, `get_data_holders`, `get_follow`, and `has_field_type`.
 * Removed oldforms-admin specific options from `django.db.models.fields.related` classes: `num_in_admin`, `min_num_in_admin`, `max_num_in_admin`, `num_extra_on_change`, and `edit_inline`.
 * Serialization framework
   * `Serializer.get_string_value` now calls the model fields' renamed `value_to_string` methods.
   * Removed a special-casing of `models.DateTimeField` in `core.serializers.base.Serializer.get_string_value` that's handled by `django.db.models.fields.DateTimeField.value_to_string`.
 * Removed `django.core.validators`:
   * Moved `ValidationError` exception to `django.core.exceptions`.
   * For the couple places that were using validators, brought over the necessary code to maintain the same functionality.
 * Introduced a SlugField form field for validation and to compliment the SlugField model field (refs #8040).
 * Removed an oldforms-style model creation hack (refs #2160).
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8616 bcc190cf-cafb-0310-a4f2-bffc1f526a37
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			810 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			810 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| 24. Mutually referential many-to-one relationships
 | |
| 
 | |
| Strings can be used instead of model literals to set up "lazy" relations.
 | |
| """
 | |
| 
 | |
| from django.db.models import *
 | |
| 
 | |
| class Parent(Model):
 | |
|     name = CharField(max_length=100)
 | |
|     
 | |
|     # Use a simple string for forward declarations.
 | |
|     bestchild = ForeignKey("Child", null=True, related_name="favoured_by")
 | |
| 
 | |
| class Child(Model):
 | |
|     name = CharField(max_length=100)
 | |
|     
 | |
|     # You can also explicitally specify the related app.
 | |
|     parent = ForeignKey("mutually_referential.Parent")
 | |
| 
 | |
| __test__ = {'API_TESTS':"""
 | |
| # Create a Parent
 | |
| >>> q = Parent(name='Elizabeth')
 | |
| >>> q.save()
 | |
| 
 | |
| # Create some children
 | |
| >>> c = q.child_set.create(name='Charles')
 | |
| >>> e = q.child_set.create(name='Edward')
 | |
| 
 | |
| # Set the best child
 | |
| >>> q.bestchild = c
 | |
| >>> q.save()
 | |
| 
 | |
| >>> q.delete()
 | |
| 
 | |
| """} |