-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathdocuments.py
75 lines (63 loc) · 1.71 KB
/
documents.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from django.contrib.auth.models import User
from django_elasticsearch_dsl import Document, fields
from django_elasticsearch_dsl.registries import registry
from blog.models import Category, Article
@registry.register_document
class UserDocument(Document):
class Index:
name = "users"
settings = {
"number_of_shards": 1,
"number_of_replicas": 0,
}
class Django:
model = User
fields = [
"id",
"first_name",
"last_name",
"username",
]
@registry.register_document
class CategoryDocument(Document):
id = fields.IntegerField()
class Index:
name = "categories"
settings = {
"number_of_shards": 1,
"number_of_replicas": 0,
}
class Django:
model = Category
fields = [
"name",
"description",
]
@registry.register_document
class ArticleDocument(Document):
author = fields.ObjectField(properties={
"id": fields.IntegerField(),
"first_name": fields.TextField(),
"last_name": fields.TextField(),
"username": fields.TextField(),
})
categories = fields.ObjectField(properties={
"id": fields.IntegerField(),
"name": fields.TextField(),
"description": fields.TextField(),
})
type = fields.TextField(attr="type_to_string")
class Index:
name = "articles"
settings = {
"number_of_shards": 1,
"number_of_replicas": 0,
}
class Django:
model = Article
fields = [
"title",
"content",
"created_datetime",
"updated_datetime",
]