mirror of
https://github.com/django/django.git
synced 2024-12-29 12:36:08 +00:00
f64a3de2d4
Thanks Federico Jaramillo Martínez for the report and Tim Graham for the
test and review.
Backport of d3d66d4722
from master
59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
from django.contrib.contenttypes.fields import (
|
|
GenericForeignKey, GenericRelation,
|
|
)
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.db import models
|
|
from django.utils.encoding import python_2_unicode_compatible
|
|
|
|
|
|
class Episode(models.Model):
|
|
name = models.CharField(max_length=100)
|
|
length = models.CharField(max_length=100, blank=True)
|
|
author = models.CharField(max_length=100, blank=True)
|
|
|
|
|
|
@python_2_unicode_compatible
|
|
class Media(models.Model):
|
|
"""
|
|
Media that can associated to any object.
|
|
"""
|
|
content_type = models.ForeignKey(ContentType)
|
|
object_id = models.PositiveIntegerField()
|
|
content_object = GenericForeignKey()
|
|
url = models.URLField()
|
|
description = models.CharField(max_length=100, blank=True)
|
|
keywords = models.CharField(max_length=100, blank=True)
|
|
|
|
def __str__(self):
|
|
return self.url
|
|
|
|
|
|
#
|
|
# Generic inline with unique_together
|
|
#
|
|
class Category(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
|
|
|
|
class PhoneNumber(models.Model):
|
|
content_type = models.ForeignKey(ContentType)
|
|
object_id = models.PositiveIntegerField()
|
|
content_object = GenericForeignKey('content_type', 'object_id')
|
|
phone_number = models.CharField(max_length=30)
|
|
category = models.ForeignKey(Category, null=True, blank=True)
|
|
|
|
class Meta:
|
|
unique_together = (('content_type', 'object_id', 'phone_number',),)
|
|
|
|
|
|
class Contact(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
phone_numbers = GenericRelation(PhoneNumber, related_query_name='phone_numbers')
|
|
|
|
|
|
#
|
|
# Generic inline with can_delete=False
|
|
#
|
|
class EpisodePermanent(Episode):
|
|
pass
|