Итак, у меня есть модель, у которой есть атрибут, который будет автоматически рассчитан, когда api получит запрос POST. Модель представляет собой модель счета, в которой суммарный платеж рассчитывается на numberOfHours * paymentRate. Django не позволяет мне это сделать, установив значение по умолчанию. Есть ли способ сделать это?Автоматический расчет по полю в модели в Django RESTframework
Модель
class Bill(models.Model):
billID = models.AutoField(primary_key=True)
bill_dt = models.DateField()
hours = models.FloatField()
workAssignmentID_fk = models.ForeignKey(WorkAssignment, null=True, default=None)
totalPayment = models.FloatField(default=0)
def __unicode__(self):
return u'%s' % (self.bill_dt)
def __str__(self):
return u'%s' % (self.bill_dt)
Serializer
class ReadBillSerializer(serializers.HyperlinkedModelSerializer):
workAssignmentID_fk = ReadWorkAssignmentSerializer()
class Meta:
model = Bill
fields = ('url', 'bill_dt', 'hours', 'workAssignmentID_fk', 'totalPayment')
class WriteBillSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Bill
fields = ('url', 'bill_dt', 'hours', 'workAssignmentID_fk', 'totalPayment')
Посмотреть
class BillViewSet(viewsets.ModelViewSet):
queryset = Bill.objects.all()
def get_serializer_class(self, *args, **kwargs):
if self.request.method == 'POST' or self.request.method == 'PUT':
return WriteBillSerializer
return ReadBillSerializer
В модели Билл, я хочу totalPayment = часы * workAssignmentID_fk.paymentRate.
paymentRate - это атрибут в workAssignmentID_fk.
Пожалуйста, добавьте код для сериализаторов, моделей и видов. Поле «numberofhours» и «paymentRate» модели? Вы используете модельный сериализатор? –
Спасибо, @RahulGupta за быстрый ответ. Я отредактировал вопрос. Пожалуйста, посмотрите –
Как мы получим объект 'workAssignmentID_fk' в случае запроса POST –