From 13de1f01b8ea6f9585c42d0a187d790a4065ed99 Mon Sep 17 00:00:00 2001 From: Nortoy Nortoy Date: Sun, 2 Mar 2025 15:45:18 +0000 Subject: [PATCH 1/2] Finish Introduction and Django Admin --- blango/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 130 bytes blango/__pycache__/settings.cpython-36.pyc | Bin 0 -> 2413 bytes blango/__pycache__/urls.cpython-36.pyc | Bin 0 -> 904 bytes blango/__pycache__/wsgi.cpython-36.pyc | Bin 0 -> 531 bytes blango/settings.py | 10 ++++++++- blog/__init__.py | 0 blog/admin.py | 10 +++++++++ blog/apps.py | 6 ++++++ blog/migrations/__init__.py | 0 blog/models.py | 23 +++++++++++++++++++++ blog/tests.py | 3 +++ blog/views.py | 3 +++ db.sqlite3 | Bin 0 -> 131072 bytes 13 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 blango/__pycache__/__init__.cpython-36.pyc create mode 100644 blango/__pycache__/settings.cpython-36.pyc create mode 100644 blango/__pycache__/urls.cpython-36.pyc create mode 100644 blango/__pycache__/wsgi.cpython-36.pyc create mode 100644 blog/__init__.py create mode 100644 blog/admin.py create mode 100644 blog/apps.py create mode 100644 blog/migrations/__init__.py create mode 100644 blog/models.py create mode 100644 blog/tests.py create mode 100644 blog/views.py create mode 100644 db.sqlite3 diff --git a/blango/__pycache__/__init__.cpython-36.pyc b/blango/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bed656417017bb6f8d5319f31c908589cbaafa81 GIT binary patch literal 130 zcmXr!<>lfrKa$P>1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnFMa)t{M=Oi=#N<@{q@2XO^n4fdO)LipD4%ZVsvCe z^vYj!_<{aMzd{dv=~I89Pu-I3#N#m2)Uu9__GRsT_D$Oh3;Eyn{xDO8MB=Z+#4m^Y zS9r5Oae;)EfFz`>q@B`I$!MRp(ps9N2=^t~oB5LHWqKJc3!IjN8EqCaW>U*TmZW=g zy?MxeNvqe=MgD~G68;d^Zfc(_Nh@WW~X?te|uq;?G+z#7UtfFI-aVZ1(~Nt4r-p{QMl zb?pXvwu1Lfyl=sVb{igRtB_U_#geg+OeFG^p5d4-&xr3+$7KAG>+y$HOzV4Yk92(@ zpWh=6@eH2;e|XA2gjl6yfK45q`G)6@Bp>nvh9LY1b6a>KJVWg&LfWoJcMdv6zx%qJVx^*f9(5x_LC@r+hxMg#@K_dYm3AY5m5BqKJ7Ab?5{Y4_m2sGG_Wk* zqRi*rqx16^4xk}IJ^qtn4G8-`wmfn)Vd!tHi9|6Oa{GpV+zfU{VW18p-GN6+8_ZdQ zzHx8!`O^(^V{K|f@{;%fqxvV zP7xy&;`sh)pRizMipdCLn3anR8ySX)8n>r4e9U7v${q_!Bc4qGEOKIaM2KTT{Zm1S zf`gmJ886tGh8h_cCiImdZ9=Pf(Fm4>?K(m^e*A|h^NxfvE^jG0nGk(8<%@x#oAg7% zcZ?eC##K9^IDLq5peB_Y!{AM5J^jWZEZY6hGrAwJbA)$Q&#+0WAGHXZ(3=~!q%iO- z7KkGdpV)m1yHYqrZQ{VVYlKSNpz4Utw52%rpM4$ssf#|j9t$2#gItsmfE*6YVEq!3 z9{Gs9EA9aXrv+%utBU2^~f}$&VU!;1h+~)H0%0csrDEz2N0#ks8#Y z_Q0+a$MlcS^?$jn{;);%M?Rhdyt*tvb6^vXb}u5#5T`U?TDqf_gPe$81MC$sxI4nd zP}(jKiwV2b#9nf%lvq%_6J~WC=e(|m**;EFiynF@3~iWlS(wxHXskp$k1*HzM8ZrT zXNu!%xm`(-qhyD9MJ~5xRevM@8qQSY-OgUP5D!wh5>HPh%o67l^;{=Ro5T;Vywj^~ z%%DE1k+4u}Dk^HAJQk1=<{Pz2r7j;xZ8@B8w_2*+Y1hlGW;L8u<;H$pQe`DvJW%#( zk$k;YmZDk5wM1i zXf3R&TnEon+j`y{?&@2c%`g+uR1J@)qK$IoN4Qjxt5T<~>S&{-S8H;;@_WL2fFX;Q ze?;-vwTT#iCqyj653Fx=i8$RzQ8dD1yE*tF&`Aj;x@;NRwx-#6%zxwzl-T(jq literal 0 HcmV?d00001 diff --git a/blango/__pycache__/urls.cpython-36.pyc b/blango/__pycache__/urls.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af5c49f44cf3dfea914ca5b6d39820a3ed68b5b8 GIT binary patch literal 904 zcma)4&2H2%5Kgk$ZArKA3ch6{mKfRt(yE}Mii%2z13#C&q~6$@^%C2W?a-DhPs4lg z6uELj;t4o0_GYCB38|LiOq}sI-}lX&9v>&u=Rd07Q4stL25SWIIXvbmY&2K~G^9}- zif9>yE*{k*5ijE~U@?tZv>k6J-=Zp99?mz0?xolyiRTvE1S4!Q1$4#>= z`2~|2WMMZZRB#DF>>U3(@t^ozcGw*h1y&{uaL@LjIGD6^HYeu6rAlAO0mb!xA)GidwBxMwB4gbSkP!t6VsRW;zXg z--1YqH85p@Ub#*%G=W@MHd7i7nFUDZ&Q|Rhg?FX z@xBD(_{tWFCr@D-WYmxRy8>L+yk#3U{QI--Uq^$>YS

e1a*CHwlDS4vGYx?8JPjAm37#syInUW!Hq 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≷GG&hK!rU<*Iuf{}y)3heh=zMXFhxKmddb~S47FYf9 z#@u0vb1q#KZv@I*6j-IHr^&CRhrnH=-}yfE3_ z7}dC6-kcv=u=f0LyJY-)j=D&6yE!WKnIB99>VXrf^rE|^ zIxYJUVX@ZPb97;SxoctFnd{f{HM;0rZR*X3dnQ}cNbDxlDKpt#d~xg|R*kxM0ywFM zdU35*IM%E`^jwyXMAx4S$Pbsr1L7>iI9d8GkgpX?R%%^|8#y(t8O|Dvlgn?39hSnK>;K-TFZ@|*6K(y{ID&Bp}_ciYT28CmNItbNzCqU+`! zU1hazyNR9-O&0~LMN_ZPhghRX{r5h?^#XAQAGWvY`!(>`EyM9{@1AmBq4Q{BVLW<3 zW4C0AZnta{7ov@dQ7+T%S<(G!qg14K@0(k#FiV)I400ck)1V8`;KmY_l z00ck)1VG^FCxG|=r@szS0uTTJ5C8!X009sH0T2KI5C8!XIEnz?|BoVsbPxam5C8!X z009sH0T2KI5C8!Xc=`#1SrNvc{&JuMAOHd&00JNY0w4eaAOHd&00JNY0*4b|@Bg!* z9~a0!k}r{;Avtn^gd+bG`Mt;&BK632WHmAw{*UlqhQAno9KI1=4E;~&8=>D0J)#-# z0Ra#I0T2KI5C8!X009sHfgS=2vpzvwTJhg2nfG<;XQnS2)hG)`t?+X)wTZ?3^ru8k z`m5V6t9DGs?o`{(`msZoT|36Mi_TEH#bv)yD7c-`plz`{O)XZ^KCa68ZAA8~yB%d# zT$DwwO;O|c3qDI;kGUnWE5l?vgQc@4gQeA-AvQrXENea{xW}4_cAK6ar>1k~B(9wO zl3hnK3q%P`U0jwdsdl=hky}LC7M3>K!V<-Tp9oWnGfNT^V<$5e?EKjfO`DH-`PKQ4 z$aOByLknXxeQCvOUB6>t3257lwrwm09UDsm51$TFo4IpdrlDiNMDW1*5t_QJdbkSb zSN1wmoT%pm)N(EDvGh0z%+?a+L_Y6tTU*MU1ZHi?b0VMfQR`UT!!$av%#;arV$MoF zA$Ts%#nK;Yr9bdof7p>qBceR!yq8)nYnD*Aoh8$;^l(c{q}$Sx*s)v?spZld6X-T$ z@;Wxy|KBrUAqWB>00JNY0w4eaAOHd&00JNY0w<6F-v3WvrJ_h600JNY0w4eaAOHd& O00JNY0wB;s;Qs-n)hIXs literal 0 HcmV?d00001 From 2e820297875067ba4cfed94280f692633d4ef1a3 Mon Sep 17 00:00:00 2001 From: Nortoy Nortoy Date: Mon, 3 Mar 2025 08:35:31 +0000 Subject: [PATCH 2/2] Finish generic relationships --- blango/__pycache__/__init__.cpython-36.pyc | Bin 130 -> 130 bytes blango/__pycache__/settings.cpython-36.pyc | Bin 2413 -> 2413 bytes blango/__pycache__/urls.cpython-36.pyc | Bin 904 -> 904 bytes blog/admin.py | 10 +++++----- blog/models.py | 15 ++++++++++++++- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/blango/__pycache__/__init__.cpython-36.pyc b/blango/__pycache__/__init__.cpython-36.pyc index bed656417017bb6f8d5319f31c908589cbaafa81..c819a4cdac129826bda4c0d03e70468f9810ebeb 100644 GIT binary patch delta 14 VcmZo-Y+__H=H=xotDDGH0{|A`18V>P delta 14 VcmZo-Y+__H=H=z$F`vj*0{|1V0=fVI diff --git a/blango/__pycache__/settings.cpython-36.pyc b/blango/__pycache__/settings.cpython-36.pyc index 494517b8c6838d5c720a60c47996c55045348663..88ca8a3e313471dd07aeea3b8351e35ad12728ca 100644 GIT binary patch delta 15 WcmaDW^j3(?n3tEUtZpM)Iwt@q83cC# delta 15 WcmaDW^j3(?n3tDpmitDwbWQ*#-UMU- diff --git a/blango/__pycache__/urls.cpython-36.pyc b/blango/__pycache__/urls.cpython-36.pyc index af5c49f44cf3dfea914ca5b6d39820a3ed68b5b8..2a88f0ecf466d7b46120d13964fd55f4ceae51bd 100644 GIT binary patch delta 15 WcmeBR?_g&$=H=xotJ}!d#0&r&9|Noa delta 15 WcmeBR?_g&$=H=z$G2h76#0&r!Kmz*! diff --git a/blog/admin.py b/blog/admin.py index e5b40a4e19..b23130c001 100644 --- a/blog/admin.py +++ b/blog/admin.py @@ -1,10 +1,10 @@ from django.contrib import admin -from blog.models import Tag, Post - -# Register your models here. -admin.site.register(Tag) +from blog.models import Tag, Post, Comment class PostAdmin(admin.ModelAdmin): prepopulated_fields = {"slug": ("title",)} -admin.site.register(Post, PostAdmin) \ No newline at end of file +# Register your models here. +admin.site.register(Tag) +admin.site.register(Post, PostAdmin) +admin.site.register(Comment) \ No newline at end of file diff --git a/blog/models.py b/blog/models.py index be0cb47837..cb3fe36b0f 100644 --- a/blog/models.py +++ b/blog/models.py @@ -1,5 +1,6 @@ from django.db import models from django.conf import settings +from django.contrib.contenttypes.fields import GenericRelation # Create your models here. class Tag(models.Model): @@ -18,6 +19,18 @@ class Post(models.Model): summary = models.TextField(max_length=500) content = models.TextField() tags = models.ManyToManyField(Tag, related_name="posts") + comments = GenericRelation(Comment) def __str__(self): - return self.title \ No newline at end of file + return self.title + +from django.contrib.contenttypes.fields import GenericForeignKey +from django.contrib.contenttypes.models import ContentType + + +class Comment(models.Model): + creator = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) + content = models.TextField() + content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) + object_id = models.PositiveIntegerField() + content_object = GenericForeignKey("content_type", "object_id") \ No newline at end of file