私はdjango開発の初心者です。私はdjangoが提供するデフォルトモデルフィールドを常に知っていましたが、本を読んでいるうちに、そして、Djangoがカスタムモデルのフィールドを持っていることを知って来た、誰かが私に下のコードが何かを知らせることができます。 お返事ありがとうございます。djangoでカスタムモデルフィールドを作成する方法とその仕組み
Models.py
class Module(models.Model):
course = models.ForeignKey(Course, related_name='modules')
title = models.CharField(max_length=200)
description = models.TextField(blank=True)
order = OrderField(blank=True, for_fields=['course'])
fields.py
class OrderField(models.PositiveIntegerField):
def __init__(self, for_fields=None, *args, **kwargs):
self.for_fields = for_fields
super(OrderField, self).__init__(*args, **kwargs)
def pre_save(self, model_instance, add):
if getattr(model_instance, self.attname) is None:
# no current value
try:
qs = self.model.objects.all()
if self.for_fields:
query = {field: getattr(model_instance, field) for field in self.for_fields}
qs = qs.filter(**query)
last_item = qs.latest(self.attname)
value = last_item.order + 1
except ObjectDoesNotExist:
value = 0
setattr(model_instance, self.attname, value)
return value
else:
return super(OrderField,self).pre_save(model_instance, add)
あなたはそれを自分で実行しようとしましたか? –