ویدیو آموزش عبارات F در جنگو

April 2020

عبارت F به شما اجازه میده که دو فیلد از یک آبجکت رو با هم مقایسه کنید.

در این مقاله میخوام از مدل زیر استفاده کنم. این مدل برای ذخیره اطلاعات مربوط به فیلماست:

class Movie(models.Model):
    name = models.CharField(max_length=30)
    budget = models.IntegerField()
    revenue = models.IntegerField()
    year = models.IntegerField()

مدل بالا چهارتا فیلد داره: اسم فیلم, بودجه ساخت, فروش فیلم, سال ساخت.

خب حالا فکر کنید به شما میگن داخل این جدول جوری query بزنید که فقط فیلم هایی که "مقدار بودجه بیشتر از مقدار فروش بوده" رو به ما نشون بده. چیکار میکنید؟

یا فکر کنید به شما بگن جوری query بزنید که فیلم ها بر اساس year ترتیب بندی بشن و فیلم هایی که مقدار year اونها null هستش آخر نشون داده بشه. باز چیکار میکنید؟

اینجا میتونید از F استفاده کنید.

پاسخ query اول:

Movie.objects.filter( budget__gt=F('revenue') )

در مثال بالا گفتم اونهایی رو برام بیار که مقداره فیلد budget بیشتر باشه از مقدار revenue

پاسخ query دوم:

Movie.objects.order_by( F('year').asc(nulls_last=True) )

در کد بالا گفتم نتایج رو بر اساس year ترتیب بندی کن و اونهایی که مقدار year برابر با null هستش رو آخر نشون بده.

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم

حامد حاجیلوپور

February 2022

با سلام و احترام
مهندس یه سوال داشتم
من یه جدول لیست افراد دارم
و یه جدول دیگه دارم مشخصلات تحصیلاتی فرد که فارن کی شده به جدول افراد
الان تو صفحه لیست افراد میخوام فرد انتخاب کنم و از فرم( ورود / ویرایش) اطلاعات تحصیلی وارد یا ویرایش کنم
مشکلم اینکه که اولا فیلد فرد با انتخاب خود فرد انتخاب پر بشه و هنگام ویرایش kwargs فرد و تحصیلات باهم تداخل میکنه نمیتوتنم از هم جدا کنم
امکانش هست راهنمایی کنید

پاسخ به نظر


امیرحسین بیگدلو

February 2022

سلام
نمیدونم حامد جان بدون دیدن کد نمیتونم چیزی بگم