mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-29 13:04:03 +03:00
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
from __future__ import unicode_literals
|
|
|
|
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
|
|
|
|
|
|
@python_2_unicode_compatible
|
|
class Tag(models.Model):
|
|
"""
|
|
Tags have a descriptive slug, and are attached to an arbitrary object.
|
|
"""
|
|
tag = models.SlugField()
|
|
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
|
|
object_id = models.PositiveIntegerField()
|
|
tagged_item = GenericForeignKey('content_type', 'object_id')
|
|
|
|
def __str__(self):
|
|
return self.tag
|
|
|
|
|
|
@python_2_unicode_compatible
|
|
class Bookmark(models.Model):
|
|
"""
|
|
A URL bookmark that may have multiple tags attached.
|
|
"""
|
|
url = models.URLField()
|
|
tags = GenericRelation(Tag)
|
|
|
|
def __str__(self):
|
|
return 'Bookmark: %s' % self.url
|
|
|
|
|
|
@python_2_unicode_compatible
|
|
class Note(models.Model):
|
|
"""
|
|
A textual note that may have multiple tags attached.
|
|
"""
|
|
text = models.TextField()
|
|
tags = GenericRelation(Tag)
|
|
|
|
def __str__(self):
|
|
return 'Note: %s' % self.text
|