سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ محمدرضا مجیدی
ننوشتن transactions
جامعه پایتون (وب) ایجاد شده در ۱۲ بهمن ۱۴۰۰

سلام و درود وقت بخیر برهمگی

سوال اول: من در تایم 3:05 فیلم که استاد داشتند کدی که از قبل نوشته بودند مشکل دارم , چرا استاد اینجوری نوشتند

Sum('amount', filter=Q(transacton_type=1))

چرا مثل چند خط بالا transactions را به ابتدای amount و transaction_type ننوشتند

کدی که چند خط بالا نوشته بودند اینجوری بود

positive_transactions = Sum(
    'transactions__amount',
    filter=Q(transactions__transaction_type=1)
)

سوال دومم: استاد در تایم 3:20 استاد امدن

user.transactions.all()

را توضیح دادند , استاد گفتند با نوشتن این خط کد میتونیم دسترسی پیدا کنیم به همه ترکنش‌های اون کاربر ,

(transactions) , related_name یوزر در کلاس Transaction هست تا اینجاش درست مگر نباید برای دسترسی به محتویات یک کلاس دیگه باید اول اسم اون کلاس را نوشت بعد اون محتویاتی که از اون کلاس میخواهیم

ممنون میشم جوابم رو بدین مرسی

رضا مجیدی عزیز سلام


بیا اول از سوال دوم شروع کنیم :)

وقتی ما یک ابجکت رو داریم مثل همین user و از transactions استفاده کنیم کوئری ست که به ما میده همه تراکنش‌های اون کاربر و نیاز به کلاس Transaction نداریم، اما وقتی بخوایم از کلاسش استفاده کنیم و تراکنش‌های یک کاربر رو استخراج کنیم به روش زیر باید انجام بدیم:

Transaction.objects.filter(user=user)

که جفتش یک خروجی رو به ما میده.


درباره سوال اولت هم باید به کلاس هایی که استاد داره روی اونها کوئری میزنه دقت کنی

توی یکیشون استاد روی user.transactions که در اصل روی Transaction استاد کوئری زده وکه فیلد transaction_type رو داریم

اما توی کد‌های بالاتر روی کلاس User کوئری زده و ما از related_name به فیلد transaction_type دسترسی داریم.

9745-2022-02-05_14-14.png


46c7-2022-02-05_14-13.png


امیدوارم تونسته باشم کمکت کنم.




بهترین پاسخ
Mohamad Mahdi Yazdani ۱۶ بهمن ۱۴۰۰، ۱۰:۵۱