11from django .contrib .sites .models import Site
22from django .db import models
3+ from django .utils .translation import gettext_lazy
4+
5+ _ = gettext_lazy
36
47
58class Article (models .Model ):
@@ -14,3 +17,79 @@ class Meta:
1417class Author (models .Model ):
1518 first_name = models .CharField (max_length = 100 )
1619 last_name = models .CharField (max_length = 100 )
20+
21+
22+ class NestedField (models .Field ):
23+ """Resembles fields like postgres ArrayField."""
24+
25+ def __init__ (self , base_field , ** kwargs ):
26+ self .base_field = base_field
27+ super ().__init__ (** kwargs )
28+
29+
30+ class ModelFieldVerboseName (models .Model ):
31+ first_arg_name = models .CharField ("first arg name [test]" )
32+ kwarg_name = models .CharField (verbose_name = "kwarg name [test]" )
33+ arg_gettext = models .CharField (_ ("arg name [test]" ))
34+ kwargs_gettext = models .CharField (verbose_name = _ ("kwarg name [test]" ))
35+ gettext_case = models .CharField (verbose_name = _ ("Kwarg Name [test]" ))
36+ gettext = models .CharField (verbose_name = gettext_lazy ("kwarg name [test]" ))
37+ name_related = models .ForeignKey (
38+ Article ,
39+ on_delete = models .CASCADE ,
40+ related_name = "+" ,
41+ verbose_name = "name related test [X050]" ,
42+ )
43+ nested_field = NestedField (
44+ models .CharField (max_length = 100 ), verbose_name = "nested field [X050]"
45+ )
46+ no_name = models .CharField ()
47+ no_name_related = models .ForeignKey (
48+ Article , on_delete = models .CASCADE , related_name = "+"
49+ )
50+ no_name_nested_field = NestedField (models .CharField (max_length = 100 ))
51+
52+
53+ class ModelFieldFileUploadTo (models .Model ):
54+ image = models .ImageField (upload_to = "/path/to/media" )
55+ file = models .FileField (upload_to = "/path/to/files" )
56+ image_fail = models .ImageField ()
57+ file_fail = models .FileField ()
58+
59+
60+ class CustomTextField (models .TextField ):
61+ pass
62+
63+
64+ class ModelFieldTextNull (models .Model ):
65+ text = models .TextField ()
66+ chars = models .CharField ()
67+ custom = CustomTextField ()
68+ text_fail = models .TextField (null = True )
69+ chars_fail = models .CharField (null = True )
70+ custom_fail = CustomTextField (null = True )
71+
72+
73+ class ModelFieldNullFalse (models .Model ):
74+ myfield = models .IntegerField ()
75+ myfield_fail = models .IntegerField (null = False )
76+
77+
78+ class ModelFieldForeignKeyIndex (models .Model ):
79+ article = models .ForeignKey (Article , on_delete = models .CASCADE , related_name = "+" )
80+ author = models .ForeignKey (Author , on_delete = models .CASCADE , related_name = "+" )
81+ another_article = models .ForeignKey (
82+ Article , on_delete = models .CASCADE , related_name = "+"
83+ )
84+ another_author = models .ForeignKey (
85+ Article , on_delete = models .CASCADE , related_name = "+" , db_index = True
86+ )
87+ filed_one = models .ForeignKey (
88+ ModelFieldTextNull , on_delete = models .CASCADE , related_name = "+" , db_index = False
89+ )
90+ filed_two = models .ForeignKey (
91+ ModelFieldNullFalse , on_delete = models .CASCADE , related_name = "+" , db_index = True
92+ )
93+
94+ class Meta :
95+ unique_together = (("article" , "author" ), ("field_one" , "field_two" ))
0 commit comments