From 17c20ddf94af888d61f7c6ee4debfcfc70cf2dcc Mon Sep 17 00:00:00 2001 From: "nabijonovdavronbek619@gmail.com" Date: Fri, 5 Dec 2025 15:04:15 +0500 Subject: [PATCH] multiple language --- content/__pycache__/admin.cpython-313.pyc | Bin 1366 -> 1386 bytes content/__pycache__/models.cpython-313.pyc | Bin 2296 -> 2513 bytes content/__pycache__/urls.cpython-313.pyc | Bin 379 -> 379 bytes content/admin.py | 2 +- ...02_rename_name_product_name_ru_and_more.py | 52 ++++++++++++++++++ ...e_product_name_ru_and_more.cpython-313.pyc | Bin 0 -> 1599 bytes content/models.py | 15 +++-- db.sqlite3 | Bin 147456 -> 151552 bytes .../__pycache__/urls.cpython-313.pyc | Bin 322 -> 461 bytes portfolio_admin/urls.py | 2 + 10 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 content/migrations/0002_rename_name_product_name_ru_and_more.py create mode 100644 content/migrations/__pycache__/0002_rename_name_product_name_ru_and_more.cpython-313.pyc diff --git a/content/__pycache__/admin.cpython-313.pyc b/content/__pycache__/admin.cpython-313.pyc index 2a2d2984d59c0b7fb28e890f24d6fe627804f79f..5ef3b0764c586b589609631fd6b667576bd887af 100644 GIT binary patch delta 171 zcmcb{^@@x4GcPX}0}wbg7-i1d$a{@RlKB>UUSe))d}$SwQB-=1H8VFceez4D6h@=T ze$0t%w^%?*CU0R@(NO?uE>Z*$N+5z8Ncd^87x92NydZ)PMDT+M>B%fC>TGf#rrcyh o7CA<_$pI`$@?Zgwz9L}|Ap#_BaoFVMrJ< zF^c3sg#6_1%nFQ>lOG~LR=Cr+@+Wk=Dd6F+`N0v{n_m&h{QTTcA z>T>BDQvWy|n3(HF3hiQ)#1 zh@nEYl*G=~_EudOJS1)RsKva9W+TOyB>m?v=moKxWpmvsmMnWUU`vFh5I7>;YY zr4_?;U07Q7T+1;Gn7}!x5>N=R$G~9XT*dH)YRNrKIo*)cwX83XR_0Ef`{!Ds+7wd_ zF;$EE;zVWkhyknyRTQPuAgCVX(Or6))44(f#?Vt*>(KaLDiWFt3nZP#ddRu}mGx*o z7RYzt#;UjC7A@2Dp!GvWK0VSGu#RbOl=Bft^a=P?Yt8g*7tzdSM-A?=^#V%>B{BuT zaIQ06s6_H)&ru=_G>kq{dmaOpT21Z_SBINw&R28w?xBxPZDN0FZ>ly@S0?MiWJfR} z-D18A_TVq#U=PZ0h!blxRw+hLox$KHvAHYn5W_pU87xx=|?}D7{T3(@-+C@vpqE%v9!EXClO; z0ygOrdjvGJ%e@}JyT_2-JF6PH#1DcjTHv+ea8){!D<>z%gOlsh1j4zmpbz|fmPr2J z;l@aUfc9Qk=EA;X=#g+C6DCe75eU;|ya%>*9nPSAAvw+g?d{r*y=}KCOxry%PYA5oZwe*Fer>gpH( delta 756 zcmZ{h%WD%+6vpRv9=(~&B+X20ny1o4Y90!B7MW_!C9^-6vgX^;Gz`ah^IJ7Wcm=*a2GkkPN`y02koB6>~K|KXmSI; ze$d!&Sa{|PN_M%`w3lv8*T>N@1NjRx_-t%%{m*iL|66{7_WW@i~#N^SZu z*UI&^q^%{bK&rjc5#Hl2Ztq$Cc?-{vy+Nqew2z!)e=-dS0cPl1F}a)q83tTraKtAi zv(8=vCSrg;UL*l?0B~8oNxf2hZXi$fkOZ&* diff --git a/content/admin.py b/content/admin.py index aacba2d..4a6ca8f 100644 --- a/content/admin.py +++ b/content/admin.py @@ -10,7 +10,7 @@ class ProductFeatureInline(admin.TabularInline): # ========== PRODUCT ADMIN ========== @admin.register(Product) class ProductAdmin(admin.ModelAdmin): - list_display = ('name',) + list_display = ('name_uz', 'name_ru', 'image') inlines = [ProductFeatureInline] diff --git a/content/migrations/0002_rename_name_product_name_ru_and_more.py b/content/migrations/0002_rename_name_product_name_ru_and_more.py new file mode 100644 index 0000000..9b2be7b --- /dev/null +++ b/content/migrations/0002_rename_name_product_name_ru_and_more.py @@ -0,0 +1,52 @@ +# Generated by Django 5.2.8 on 2025-12-05 07:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('content', '0001_initial'), + ] + + operations = [ + migrations.RenameField( + model_name='product', + old_name='name', + new_name='name_ru', + ), + migrations.RemoveField( + model_name='productfeature', + name='key', + ), + migrations.RemoveField( + model_name='productfeature', + name='value', + ), + migrations.AddField( + model_name='product', + name='name_uz', + field=models.CharField(default='Nomalum', max_length=255), + preserve_default=False, + ), + migrations.AddField( + model_name='productfeature', + name='key_ru', + field=models.CharField(default='salom', max_length=255), + ), + migrations.AddField( + model_name='productfeature', + name='key_uz', + field=models.CharField(default='salom', max_length=255), + ), + migrations.AddField( + model_name='productfeature', + name='value_ru', + field=models.CharField(default='salom', max_length=255), + ), + migrations.AddField( + model_name='productfeature', + name='value_uz', + field=models.CharField(default='salom', max_length=255), + ), + ] diff --git a/content/migrations/__pycache__/0002_rename_name_product_name_ru_and_more.cpython-313.pyc b/content/migrations/__pycache__/0002_rename_name_product_name_ru_and_more.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b403a354a6d36aed38fac7673464d90957bd2b1 GIT binary patch literal 1599 zcmbtUPix#p6dy^uT4}v&uh(|6i4!*%Ln0C^H&Dt#36#(joWumr)iB7b*|ic$vwf1> z#HT`_=U)09+HcTf={K-1UZ%&Me6w*&j>#KIixr4NN(OfH{``LLy_xrB&)e-L!8Lq+ zKlr;&$UjP%F4XgN{s2F}5=yA{m~3jGZR()kB0aK7sD7PLV@KOIOKj!yl~E{QjA~B( zL@ACgn^7X50gQKL^`E%{+Fhb?hw!@0i9}KP~Fv_wo~73RSAWRr5LnE z>(uNUh?xB#qCqWc_w|qXo27qRMI}t0VP?nPUaS~P5q&M%rn7yW&e2X^)%f8E4LW~m zgl-vOAwR)o{Ke1YFMTHe%BS#M3ufq5XpMT#HEBPccKk$53C=)cAmWtAscda*Y<$Ur zI7kC8l#MY6KO3a77JCtw4Yf1K90P|&4GPQ6mI(b)iusR)G+Q!<+)Fdy(s;pNIXbj4 z9n9b+>-%1qO+#h}vauy1v_vOw%ZhwH^s+F;Ox{Zt@_3Z)J#uQ*2*ZGfzU+*FCmi-U zn=(wyg;mOW;)Nn|j0+C*RO;N1DXqK&g)F7);CHg+w57%JLogR*!24h@?wjVm)$EA$e0)VcoD$Y$FD$*Oui{0 zxq*KQKa*3F*lVYTzG(jRyN>i$PA`B+zjguq`j6zW`>>k& zf1;K@Db^*Z@3lK!^Ytd&onF_LQ1wI-QUe8B=3H4p{l6`_8v;o`lgt>2e6JR j-Z9=ZZl{K(X>UxTIscmLn)yrfxU+WHS^JNmlC$3dHxqw9 literal 0 HcmV?d00001 diff --git a/content/models.py b/content/models.py index 7682149..58dc76d 100644 --- a/content/models.py +++ b/content/models.py @@ -2,21 +2,26 @@ from django.db import models # ======== PRODUCT MODEL ======== class Product(models.Model): - name = models.CharField(max_length=255) + name_uz = models.CharField(max_length=255) + name_ru = models.CharField(max_length=255) image = models.ImageField(upload_to='products/') def __str__(self): - return self.name + return self.name_uz # ======== PRODUCT FEATURES (KEY-VALUE) ======== class ProductFeature(models.Model): product = models.ForeignKey(Product, related_name='features', on_delete=models.CASCADE) - key = models.CharField(max_length=255) - value = models.CharField(max_length=255) + + key_uz = models.CharField(max_length=255,default='salom') + key_ru = models.CharField(max_length=255 , default='salom') + + value_uz = models.CharField(max_length=255, default='salom') + value_ru = models.CharField(max_length=255, default='salom') def __str__(self): - return f"{self.product.name} - {self.key}" + return f"{self.product.name_uz} - {self.key_uz}" # ======== CONTACT FORM DATA ======== diff --git a/db.sqlite3 b/db.sqlite3 index 461edf9205bc5a5c924ce697b3e63432e097dd64..d8a32c918e70cdd76e236278070359be80acb733 100644 GIT binary patch delta 517 zcmXv~PiWI{7|qu-%RlQc8(~E|F(|W+F59n}t#shPQ!m1%s317ftP3*MBqKD1?UW1@ z#7oMAALvDbdh^ib(18qw*Ijn-CPGi57Znd4M9{3u4)5bV-p6}{Z=zTvNkZMJ;P8t|<8WJl5uMb*4O5!`G_uMB!_8oI`aAeM2A7d(=VC z&ZsTYRK%P^bd4he8^+}^kuGs*wVqb(bY`D|9N~@VrxbwT@%x;_ejbULKg>RJC0oxNB};p~;5*Pkd4VW4+yaqUHkf?-2Ai+d z;4w`;*-$1e8#p36aEC+=Ec4UKrFC;tcRg~^fb%2A+}j#*u4A-3^VCVziI*3rf`?T$ zUn;@2L*6vtGE9=30~g4b22_|e%Xnmx?i%EUB!2kJG@l)cGz6wd*aAWZ7A%mf7VP!! z8?X%hgC@KK@}LP760gAXzGcD|140age~WJq0C$%}5aUt*2kI^{yJ1%9XQj;F*~pjv E164|#E&u=k delta 399 zcmZozz}e8iIYC-bje&td1&Cq5ZlaDcquR!VCH&07+%l8d1=Ke-zT?^~BmII!h>gFD zf&V4{75?4)W&GXzv-m4EHYV^-F4OO16kcRduxNq+5N(>kBCwg|!ry*fW_Jc5hS>~U zHk>Ot?s5pRyf zPY+CCRA%I!{yvRSYSk#3Btt0|U+NE7KU$8K-~B zWSkBktCy6nYQ^$~9+|rVAh2mL10Zw|4=NwTGi3scsX{ce#4rK1vzjtO6hb8#^qGp- z)7doHCnkt#XfobnO-#wn%&TGpQ~Fgbi3OSZRXoZ0c_pcNC3>YrImLdO920vb6!=oI z67$mY^*~ZZnMp;gKx1#Q6la#C-eLhMo46#$oewAmvaZ+^NPJ*sWMsV0pn8`<;UgOZ wD`$tq1k>qO6RoD(Pqe?xqI{EuqeE<>_zbzrf*O}uG(WI1^D{Ma7lFJ50H;$x)Bpeg delta 225 zcmX@he2A(3GcPX}0}!~e=x3$?>Bk@r46s2NpG|;_sSLpk!HnJvUW`SIUQ9(y3Jfuf zN({kFF-$;`*_08Y)|3fC>oXQHr?Y6Xz65bKnQpNZB$i~{V$aM=&M8evtztC%v k?=z@=WMg3E>=2tMK11%ZpvGku%@52>{7jA9MI1my05+a2j{pDw diff --git a/portfolio_admin/urls.py b/portfolio_admin/urls.py index 0c922cd..5acbcdf 100644 --- a/portfolio_admin/urls.py +++ b/portfolio_admin/urls.py @@ -1,5 +1,7 @@ from django.urls import path, include +from django.contrib import admin urlpatterns = [ + path('admin/', admin.site.urls), path('api/', include('content.urls')), ]