τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
F
Τα αντικείμενα είναι πολύ ισχυρά και μπορούν να εκτελέσουν σύνθετες εργασίες σε λειτουργίες ερωτημάτων και ενημερώσεων.μεταξύ των πεδίωνΛειτουργία.
Ας υποθέσουμε ότι έχουμε ένα μοντέλο που περιέχει πληροφορίες προϊόντος Product
:
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=2)
discount_price = models.DecimalField(max_digits=10, decimal_places=2)
stock = models.IntegerField()
def __str__(self):
return self.name
Αποκτήστε όλα τα είδη με έκπτωση χαμηλότερη από την αρχική τιμή:
from django.db.models import F
# 获取所有折扣价低于原价的商品
discounted_products = Product.objects.filter(discount_price__lt=F('price'))
for product in discounted_products:
print(product.name, product.price, product.discount_price)
Υπολογίστε το ποσό έκπτωσης (αρχική τιμή μείον τιμή έκπτωσης) για κάθε είδος και ταξινομήστε κατά ποσό έκπτωσης:
# 计算每个商品的折扣金额,并按折扣金额排序
products_with_discount = Product.objects.annotate(
discount_amount=F('price') - F('discount_price')
).order_by('-discount_amount')
for product in products_with_discount:
print(product.name, product.price, product.discount_price, product.discount_amount)
F
λειτουργία ενημέρωσης αντικειμένουΑυξήστε την τιμή όλων των ειδών με λιγότερα από 10 σε απόθεμα κατά 10%:
# 将所有库存少于10的商品的价格提高10%
Product.objects.filter(stock__lt=10).update(price=F('price') * 1.10)
F
Αντικείμενα και αθροιστικές συναρτήσειςΥπολογίστε το μέσο ποσό έκπτωσης για είδη με περισσότερα από 20 είδη σε απόθεμα:
from django.db.models import Avg
# 计算库存大于20的商品的平均折扣金额
average_discount = Product.objects.filter(stock__gt=20).annotate(
discount_amount=F('price') - F('discount_price')
).aggregate(Avg('discount_amount'))
print(average_discount) # 输出: {'discount_amount__avg': 例如 15.00}
F
Το αντικείμενο ενημερώθηκε υπό όρουςΟρίστε τη μειωμένη τιμή για όλα τα είδη με λιγότερα από 10 είδη σε απόθεμα στο 90% της αρχικής τιμής:
# 将所有库存少于10的商品的折扣价设置为原价的90%
Product.objects.filter(stock__lt=10).update(discount_price=F('price') * 0.90)
F
Τα αντικείμενα εκτελούν σύγκριση και φιλτράρισμα μεταξύ των πεδίωνΛάβετε όλα τα προϊόντα με ποσό έκπτωσης μεγαλύτερο από 20:
# 获取所有折扣金额大于20的商品
products_with_large_discount = Product.objects.annotate(
discount_amount=F('price') - F('discount_price')
).filter(discount_amount__gt=20)
for product in products_with_large_discount:
print(product.name, product.price, product.discount_price, product.discount_amount)