self.is_bound = data is not None or files is not None
def is_valid(self):
"""
Returns True if the form has no errors. Otherwise, False. If errors are
being ignored, returns False.
"""
return self.is_bound and not self.errors
Возможности наследования серьёзно ограничены тем, что индексы (включая ограничения уникальности) и ограничения внешних ключей относятся только к отдельным таблицам, но не к их потомкам. Это касается обеих сторон ограничений внешних ключей. Таким образом, применительно к нашему примеру:
class S(models.Model):
name = models.CharField(max_length=255, verbose_name='Название')
class T(models.Model):
name = models.CharField(max_length=255, verbose_name='Название')
s = models.ForeignKey(S)
>>> print(S.objects.all().values('name', 't__name').query)
SELECT "core_s"."name", "core_t"."name" FROM "core_s" LEFT OUTER JOIN "core_t" ON ("core_s"."id" = "core_t"."s_id")
print(S.objects.all().annotate(t_name=F('t__name')).query)
SELECT "core_s"."id", "core_s"."name", "core_t"."name" AS "t_name" FROM "core_s" LEFT OUTER JOIN "core_t" ON ("core_s"."id" = "core_t"."s_id")
# тут на выходе будут экземпояры модели S, но стоит учитывать что при таком запросе они могут дублироваться для разных значений t.
>> from decimal import Decimal
>>> quantize = Decimal('.01')
>>> print(Decimal(123.456).quantize(quantize).normalize())
123.46
>>> print(Decimal(123.00).quantize(quantize).normalize())
123
Product.objects.annotate(
price_with_sale=F('price')*(1-F('sale__percent'))
).filter(
Q(price__range=(10, 80)) | Q(price_with_sale__range=(10, 80))
)
>>> Decimal(0.0005)
Out[23]: Decimal('0.0005000000000000000104083408558608425664715468883514404296875')
>>> Decimal('0.0005')
Out[24]: Decimal('0.0005')
>>> round(Decimal('0.0005'), 3)
Out[25]: Decimal('0.000')
>>> round(Decimal(0.0005), 3)
Out[26]: Decimal('0.001')
>>> round(Decimal(0.0006), 3)
Out[27]: Decimal('0.001')
>>> round(Decimal(0.0004), 3)
Out[28]: Decimal('0.000')
pattern= re.compile(r'\#\w+', re.U)
>>> compound_transpositions = [[2, 3], [3, 4], [4, 5], [5, 6]]
>>> coefficients = [17, 69, 84, 3, 46, 97, 12, 68, 70, 10]
>>> compound_transpositions.sort(key=lambda x: coefficients[x[0]]-coefficients[x[1]])
>>> compound_transpositions
[[4, 5], [3, 4], [2, 3], [5, 6]]