From d74eb7edc458296f2bd4a4197b5d5d54c1933e5a Mon Sep 17 00:00:00 2001 From: jeremygan2021 Date: Thu, 12 Feb 2026 17:46:46 +0800 Subject: [PATCH] forum --- .../shop/__pycache__/admin.cpython-312.pyc | Bin 16782 -> 17268 bytes backend/shop/admin.py | 16 ++++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/backend/shop/__pycache__/admin.cpython-312.pyc b/backend/shop/__pycache__/admin.cpython-312.pyc index 0d97ef11b5270d6ebb18322439e7c2b63dbd957d..d7f938df9d39757b74b2f0daca2e8ee6950837f3 100644 GIT binary patch delta 3188 zcmZ`*dr*|u72mtdF0cs88w7-fkjN^pfG7_&niwCWQj-kC$+WY4?Ds7!?#sKoW0(E` zq69P%tycpETZ=X-K0t$sL~3X|$#nXT(@sM_o2e%I0NX#XnojyhYtOmgy4JDoAHO~K zoO93Po^#Lr2KJEqZ<3^6CnoAu@aq^kV3QjzC;c*!%|9PcTG;KxTxMy=t`g&qtF3BL zFD8f!B6OmdBpSqIG3B@hB&lMWm~JChwKe9AIDdvIla(iB5iMJvw75%7^|?jCD~V>o zYZh%Dw_Wg?2z><{n$+}L@JF`+SkwUj`_sVUUJSsX%1=z{#!gLR#adboj8Qc$hCf;3 zYVGjgHlvZ6;E%or(7E_^>7{nTyG`)FfbuN> z2n}Bey>lrv_~G2(6<UTwJl|@)lEiJcH)>YM6D^0B5P{gh!-C%=;rCmgh72G!S z4#_`CUdc1FZO&28Vw*dns~+TnFm^DhL}*@w8l}Vrj`W*}Qmiil^O0 zp-m)@h1%R+o6E^ICYxT^3(9*{x6-zEZ<$Foc5j|ZFX`U;j~KN!V_v5!t^X`0^N%ql zKQ{k%#OpD-WChLabS6wPE6&*W~r8yiy%{21WtRr>6i1?h)e z^BQ#y@YKLtl)}D9{#{}_IHWrOpher*WJ+N|8**$29W0PiR)`w1-U_L>JJK4@oq_*d`;5GrF72#z7Io9U1+njJpBHLM?rnjO1p^3ei)=RAHcHTmE zJFSN}n3!HgY-}*ym%JU7b|O#&AIrqY2Ch;a8HjYljmaJRdhlG*8Vv`SRgN)EwhhqAuOmD&Bwk~MrYH={5?@-<$Y;MmDf z|JA_sNND%CNgJ_daXH+A({FYP4vFqVBm3F6v!1O*=Z&LrSbG(%K&V7$L5LocY@m`L zx}0{u*=m#Q;=_~bK`n${_NS~4(!FLDLkI*L3L$HEz ziv^PtV0e3}t<~ps(Wk{9tzM+9PohbL_u2RIByw`%c3vhSZS0#xWx6($ots#izmbqD z%v(@Ie#Hh0+Q7%PZLF6#Ij5m60|BQ`Wl$n`rh3b_f(-3gg2! z;5@4=EF?GBtA)q1&ZCDWfX7~maTZ@>BA>JBqC<)2KnP_kM#X0KSt8i!;duwz#;2++y2`9r-^;DWP2R2_IwZX7N%IoQQokPoqO8^iyUk>DOWG^cU=E zNrmnrkex;BR&j3JPHMKeL}`v0OrJDF8V&c?4^PTQ_>Y3jcDjT0RM<#m&<39+mLk%fe)7^ zHd;|mo?|l=Ei2zfE}uL)`p<`Ia@r;;0Ajun{;?7>1p=+ z%JPC1Bp+QmUe$ZZvmo#p!Ybffu3)0>`Bp;qvEx-QR!3&Se?Udnx!jV|Ci47X5pW`U18$MtK}pN&TMwtEIat?lm+{soc!2%FLtu?wTqIY zfzTv09A>|5Sjg_yR;TjYuU5D`#U{4At{N_1M_uzXVf4(cpgrXtANepmygzihXZB1# z_;IqY>NX^|pk6D2fN+@A*XJ+9G~^UPbl99`7lk?~&mT`Jk60%L>dS~uX%F_Z274Bd zL_^P@1s-H1oOLT}NI&abxg~*%{)X~Cc4K8pP79LUBllf^nLX+keLk)cdL}AYl@r6~ zpf0OzE}D(|{>mJyEjd;s`IklyQv8`ZiPR{&v--=-T%sGQzo&w~dm5Fxa9$16eEr0i IFI*u11x*d1$p8QV delta 2695 zcmZ`*3s6*L6z1QB1$KFZERSUYMPxBRMFassdRUE0R+CLNx?J~O;NtFH`tPm`G!2xf zSXtWXWi_JZsF-2IG&+?fjZ->3XPPPIPBqmS&|?}J9A_GPo%3I$aEKYcd+zt2*Z-gM zpSzcKvd6cxgb(B6?GgC5dH)`DbmdUOh4_6rvFsN3E1j=a~_ne0h1((YDnXq7@6q|O_(V6)oNAP3Z-ClWR%EUNS{emjQn zSom%D;2RLaaR@*3zd82ei63|D89y_~8%V?YuLi#z3X{emCn*>5k~7v@jA*G{^=?%< z4ZGCd?$s3^S3(2Ki1BHDztpZP0~X=Ki1zsB*p zuQqA5WFcokE;A8^Qa*`S&ebaQ#fafj zKuE%lt6)p>vyGsqwbpDVGcQ3C!A%H8v>NoQK}F{hQRM{11Ret4Rag({^L8*Fyjz|L zZ_Im`wLw+-GS&=R)5A#{NhwI65pbAHFE0|In&^ElzuRbmK!LT+U6CX~m%RWEtW1N1 zjBPh|AmNGRy`=Uq!486Hwuj`05RAC?RxPM_gWyKvMl!=>(l2e${;pwH7k3N z?4}7)=R092XHmDHXOzvmHu%z5->Hc=ddHsGk2^D!$>I>fE(9Ywpy;~PqVPTVh8LFV zXgFk54{>!%IHd7LzKN8t>F|Ey2#({wem4SixHqwW(doas|70@!l3QYvN$u!xZr&}7 z4MA)EeD)qZn%}}+gQ@(pX)_JxVMbI)3rT){8a|l6YN27(wzL`cc1e}Jy5z?Ut>`E( zFVDPQ$MB`g1y>fh*acX#V85FP%)Nl3ok7qo2v@aFz~u!V_9^5Q?2SK)JQmSZgfj)V zvdA@$8r75h|Lyk#IT|8}C7`21`(KmOSDL905HSj}S@lHhg*A6gvVRmbBIP5Gkh2VU!G;6wt!KkP+oqwkdwIT}7ux znes2Q)OiPlO4mC{Vb*Om{lREyVO%e*kwPPX9PDK-77dHae(LTan%dcjZ&5;CHKYX0 zi6q9AFq%o~>inCVo$(}wnUUC``0%6Y4RJ}v38~GDMGANc!AGqHdzVZk$wVC_5YuG@ z`j(b5H=J79RJ)tl1_Y0dUncn=f)R6nSPF*JP^UR*XST*4Aj`%*yURwGk-rRs z%Sv-+Pf#w(IYrA81QJ|X=3>s_jPfmv?Su!GUtdnAg=znV55uOlD?wEjd&2?nx8Pco zpsa9i!P;^wK?h7O&$p2s?*nJWM{EQxRxD@rkh$V3b_Oo5sAD%lMP+S98>xtWMH!J{ z98e+(&Y#_tZTPLcRJqP}52@S->#LlbOo#a1=yCjie~R%ab`?Rnh+Q#~B=U64*!hz< zf~w(>DvhyTSXy1lIzX+?aftI24b}nss&kTN!t(@jHwN!iuS+?Lw)mSsFmytE1Y9-c z_;uM(v(Yg|gz(S{Lp4skU>9m`P7(!Zq9rp`$g6d;38=4iy5~wUm4Xp$9uC!(Fq>Is zIJ(O3Jc~}SGKb06e={hqt6)9QRJYC{mVT!7UN}`(lyyzB;+Lz@caT`H5f%w++lXL_=Tm5}{DziOTJr#kEDQko!f6{`|WbyF% Hh7;@`5GBC? diff --git a/backend/shop/admin.py b/backend/shop/admin.py index fa15012..45e3192 100644 --- a/backend/shop/admin.py +++ b/backend/shop/admin.py @@ -54,20 +54,28 @@ class ProductFeatureInline(TabularInline): @admin.register(WeChatPayConfig) class WeChatPayConfigAdmin(ModelAdmin): - list_display = ('app_id', 'mch_id', 'is_active', 'notify_url') + list_display = ('app_id', 'mch_id', 'is_active', 'notify_url', 'updated_at_display') list_filter = ('is_active',) search_fields = ('app_id', 'mch_id') + + def updated_at_display(self, obj): + # 假设模型没有 updated_at,如果有可以显示,这里仅作占位或移除 + return "N/A" + updated_at_display.short_description = "更新时间" + fieldsets = ( - ('基本配置', { - 'fields': ('app_id', 'mch_id', 'is_active') + ('核心配置 (登录与支付)', { + 'fields': ('app_id', 'app_secret', 'mch_id', 'is_active'), + 'description': 'AppID 和 AppSecret 是小程序登录和支付的基础凭证。请确保 AppID 与小程序后台一致 (项目中优先使用 wxdf2ca73e6c0929f0)。' }), ('微信支付 V3 安全配置 (推荐)', { 'fields': ('apiv3_key', 'mch_cert_serial_no', 'mch_private_key'), 'description': '使用 Native 支付必须配置这些项。私钥可以粘贴在这里,或者放在 backend/certs/apiclient_key.pem 文件中。' }), ('微信支付 V2 安全配置 (旧版)', { - 'fields': ('api_key', 'app_secret'), + 'fields': ('api_key',), 'classes': ('collapse',), + 'description': '仅旧版支付接口需要 API Key (V2)。' }), ('回调配置', { 'fields': ('notify_url',)