1import datetime 2import decimal 3import uuid 4 5from django.db import models 6from django.contrib.auth.models import User 7from django.db.models.query_utils import DeferredAttribute 8 9 10class TagManager(models.Manager): 11 def specially_filtered_tags(self): 12 return self.all() 13 14 15class Tag(models.Model): 16 tag_name = models.CharField() 17 18 objects = TagManager() 19 20 custom_objects = TagManager() 21 22 23class Category(models.Model): 24 category_name = models.CharField() 25 26 27class AttachedData(models.Model): 28 extra_data = models.TextField() 29 30 31class BusinessModel(models.Model): 32 attached_o2o = models.OneToOneField(AttachedData) 33 34 category_fk = models.ForeignKey(Category) 35 category_fk2 = models.ForeignKey('Category') 36 category_fk3 = models.ForeignKey(1) 37 category_fk4 = models.ForeignKey('models') 38 category_fk5 = models.ForeignKey() 39 40 integer_field = models.IntegerField() 41 big_integer_field = models.BigIntegerField() 42 positive_integer_field = models.PositiveIntegerField() 43 small_integer_field = models.SmallIntegerField() 44 char_field = models.CharField() 45 text_field = models.TextField() 46 email_field = models.EmailField() 47 ip_address_field = models.GenericIPAddressField() 48 url_field = models.URLField() 49 float_field = models.FloatField() 50 binary_field = models.BinaryField() 51 boolean_field = models.BooleanField() 52 decimal_field = models.DecimalField() 53 time_field = models.TimeField() 54 duration_field = models.DurationField() 55 date_field = models.DateField() 56 date_time_field = models.DateTimeField() 57 uuid_field = models.UUIDField() 58 tags_m2m = models.ManyToManyField(Tag) 59 60 unidentifiable = NOT_FOUND 61 62 #? models.IntegerField() 63 integer_field 64 65 def method(self): 66 return 42 67 68# ----------------- 69# Model attribute inference 70# ----------------- 71 72#? DeferredAttribute() 73BusinessModel.integer_field 74#? DeferredAttribute() 75BusinessModel.tags_m2m 76#? DeferredAttribute() 77BusinessModel.email_field 78 79model_instance = BusinessModel() 80 81#? int() 82model_instance.integer_field 83#? int() 84model_instance.big_integer_field 85#? int() 86model_instance.positive_integer_field 87#? int() 88model_instance.small_integer_field 89#? str() 90model_instance.char_field 91#? str() 92model_instance.text_field 93#? str() 94model_instance.email_field 95#? str() 96model_instance.ip_address_field 97#? str() 98model_instance.url_field 99#? float() 100model_instance.float_field 101#? bytes() 102model_instance.binary_field 103#? bool() 104model_instance.boolean_field 105#? decimal.Decimal() 106model_instance.decimal_field 107#? datetime.time() 108model_instance.time_field 109#? datetime.timedelta() 110model_instance.duration_field 111#? datetime.date() 112model_instance.date_field 113#? datetime.datetime() 114model_instance.date_time_field 115#? uuid.UUID() 116model_instance.uuid_field 117 118#! ['attached_o2o = models.OneToOneField(AttachedData)'] 119model_instance.attached_o2o 120#! ['extra_data = models.TextField()'] 121model_instance.attached_o2o.extra_data 122#? AttachedData() 123model_instance.attached_o2o 124#? str() 125model_instance.attached_o2o.extra_data 126 127#! ['category_fk = models.ForeignKey(Category)'] 128model_instance.category_fk 129#! ['category_name = models.CharField()'] 130model_instance.category_fk.category_name 131#? Category() 132model_instance.category_fk 133#? str() 134model_instance.category_fk.category_name 135#? Category() 136model_instance.category_fk2 137#? str() 138model_instance.category_fk2.category_name 139#? 140model_instance.category_fk3 141#? 142model_instance.category_fk4 143#? 144model_instance.category_fk5 145 146#? models.manager.RelatedManager() 147model_instance.tags_m2m 148#? Tag() 149model_instance.tags_m2m.get() 150#? ['add'] 151model_instance.tags_m2m.add 152 153#? 154model_instance.unidentifiable 155#! ['unidentifiable = NOT_FOUND'] 156model_instance.unidentifiable 157 158#? int() 159model_instance.method() 160#! ['def method'] 161model_instance.method 162 163# ----------------- 164# Queries 165# ----------------- 166 167#? ['objects'] 168model_instance.object 169#? 170model_instance.objects 171#? 172model_instance.objects.filter 173#? models.query.QuerySet.filter 174BusinessModel.objects.filter 175#? BusinessModel() None 176BusinessModel.objects.filter().first() 177#? str() 178BusinessModel.objects.get().char_field 179#? int() 180BusinessModel.objects.update(x='') 181#? BusinessModel() 182BusinessModel.objects.create() 183 184# ----------------- 185# Custom object manager 186# ----------------- 187 188#? TagManager() 189Tag.objects 190#? Tag() None 191Tag.objects.filter().first() 192 193#? TagManager() 194Tag.custom_objects 195#? Tag() None 196Tag.custom_objects.filter().first() 197 198# ----------------- 199# Inheritance 200# ----------------- 201 202class Inherited(BusinessModel): 203 text_field = models.IntegerField() 204 new_field = models.FloatField() 205 206inherited = Inherited() 207#? int() 208inherited.text_field 209#? str() 210inherited.char_field 211#? float() 212inherited.new_field 213 214#? 215Inherited.category_fk2.category_name 216#? str() 217inherited.category_fk2.category_name 218#? str() 219Inherited.objects.get().char_field 220#? int() 221Inherited.objects.get().text_field 222#? float() 223Inherited.objects.get().new_field 224 225# ----------------- 226# Model methods 227# ----------------- 228 229#? ['from_db'] 230Inherited.from_db 231#? ['validate_unique'] 232Inherited.validate_uniqu 233#? ['validate_unique'] 234Inherited().validate_unique 235 236# ----------------- 237# Django Auth 238# ----------------- 239 240#? str() 241User().email 242#? str() 243User.objects.get().email 244 245# ----------------- 246# values & values_list (dave is too lazy to implement it) 247# ----------------- 248 249#? 250BusinessModel.objects.values_list('char_field')[0] 251#? dict() 252BusinessModel.objects.values('char_field')[0] 253#? 254BusinessModel.objects.values('char_field')[0]['char_field'] 255 256# ----------------- 257# Completion 258# ----------------- 259 260#? 19 ['text_field='] 261Inherited(text_fiel) 262#? 18 ['new_field='] 263Inherited(new_fiel) 264#? 19 ['char_field='] 265Inherited(char_fiel) 266#? 19 ['email_field='] 267Inherited(email_fie) 268#? 19 [] 269Inherited(unidentif) 270#? 21 ['category_fk=', 'category_fk2=', 'category_fk3=', 'category_fk4=', 'category_fk5='] 271Inherited(category_fk) 272#? 21 ['attached_o2o='] 273Inherited(attached_o2) 274#? 18 ['tags_m2m='] 275Inherited(tags_m2m) 276 277#? 32 ['tags_m2m='] 278Inherited.objects.create(tags_m2) 279#? 32 ['tags_m2m='] 280Inherited.objects.filter(tags_m2) 281#? 35 ['char_field='] 282Inherited.objects.exclude(char_fiel) 283#? 34 ['char_field='] 284Inherited.objects.update(char_fiel) 285#? 32 ['email_field='] 286Inherited.objects.get(email_fiel) 287#? 44 ['category_fk2='] 288Inherited.objects.get_or_create(category_fk2) 289#? 44 ['uuid_field='] 290Inherited.objects.update_or_create(uuid_fiel) 291#? 48 ['char_field='] 292Inherited.objects.exclude(pk=3).filter(char_fiel) 293