mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-14 13:46:59 +03:00
41 lines
1015 B
Python
41 lines
1015 B
Python
|
from django.contrib.contenttypes.fields import (
|
||
|
GenericForeignKey, GenericRelation
|
||
|
)
|
||
|
from django.contrib.contenttypes.models import ContentType
|
||
|
from django.db import models
|
||
|
|
||
|
|
||
|
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
|
||
|
|
||
|
|
||
|
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
|
||
|
|
||
|
|
||
|
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
|