Форум сайта python.su
Есть код:
class Something(Model):
...
order_field = PositiveSmallIntegerField()
class Meta:
ordering = ['display_order']
Офлайн
fthhttp://docs.djangoproject.com/en/1.2/ref/models/fields/#django.db.models.Field.default
но понятно, что deafult = self.objects.reverse().all() написать нельзя…
def next_order():
return Something.objects.aggregate( max_order = Max('order_field'))['max_order'] + 1
...
...
order_field = PositiveSmallIntegerField(default = next_order)
...
Отредактировано (Март 13, 2011 15:20:06)
Офлайн
Так я же написал, что “а в вызываемом объекте классом Somethnig воспользоваться не получается.”
Если мы создадим функцию до объявления, то не сможем воспользоваться классом Something, ибо он не объявлен, если после, то сама функция ещё не объявлена, в отдельный файл тоже не получится, ибо будет ругаться из-за перекрёстного импорта.
Офлайн
fthне поленился и проверил - рабочий код:
Так я же написал, что “а в вызываемом объекте классом Somethnig воспользоваться не получается.”
Если мы создадим функцию до объявления, то не сможем воспользоваться классом Something, ибо он не объявлен, если после, то сама функция ещё не объявлена, в отдельный файл тоже не получится, ибо будет ругаться из-за перекрёстного импорта.
from django.db import models
def next_order():
max = Test.objects.aggregate(max=models.Max('order'))['max']
if max:
return max+1
return 1
class Test(models.Model):
order = models.IntegerField(default=next_order)
Офлайн
Хм… Действительно работает, что-то я не так тогда писал видимо.
В любом случае, спасибо!
Офлайн