平均来自django管理表单的输入并将其添加到模型字段

平均来自django管理表单的输入并将其添加到模型字段,django,forms,admin,Django,Forms,Admin,在django管理表单中,我有许多字段,用户可以在其中输入浮点数。我想平均这些数字,并在提交表单时将平均值保存到相关外部对象的模型字段中。最好的方法是什么 编辑: 根据fest下面的回答,我尝试了: class ForeignObject(models.Model): avg = models.FloatField() class MyModel(models.Model): foreign_object = models.ForeignKey(ForeignObject) fie

在django管理表单中,我有许多字段,用户可以在其中输入浮点数。我想平均这些数字,并在提交表单时将平均值保存到相关外部对象的模型字段中。最好的方法是什么

编辑: 根据fest下面的回答,我尝试了:

class ForeignObject(models.Model):
  avg = models.FloatField()

class MyModel(models.Model):
  foreign_object = models.ForeignKey(ForeignObject)
  field1 = models.FloatField()
  field2 = models.FloatField()
  avg = models.FloatField(blank=True, null=True)

  def save(*args, **kwargs):
    self.foreign_object.avg = float(sum([self.field1, self.field2])) / 2 
    return super(models.Model, self.foreign_object).save(*args, **kwargs)

但收到异常:
'super'对象在尝试提交管理表单时没有属性“save”

在模型的save()方法中设置平均值:


您很可能还希望将
avg
字段设置为只读-

在模型的save()方法中设置平均值:


很可能您还希望将
avg
字段设置为只读-

我认为您的代码应该是:

class ForeignObject(models.Model):
  avg = models.FloatField()

class MyModel(models.Model):
  foreign_object = models.ForeignKey(ForeignObject)
  field1 = models.FloatField()
  field2 = models.FloatField()
  avg = models.FloatField(blank=True, null=True)

  def save(self, *args, **kwargs):
    self.foreign_object.avg = float(sum([self.field1, self.field2])) / 2 
    self.foreign_object.save()
    super(MyModel, self).save(*args, **kwargs)
这假定已创建self.foreign\u对象。
另外,save不会返回任何值,因此不需要返回。

我认为您的代码应该是:

class ForeignObject(models.Model):
  avg = models.FloatField()

class MyModel(models.Model):
  foreign_object = models.ForeignKey(ForeignObject)
  field1 = models.FloatField()
  field2 = models.FloatField()
  avg = models.FloatField(blank=True, null=True)

  def save(self, *args, **kwargs):
    self.foreign_object.avg = float(sum([self.field1, self.field2])) / 2 
    self.foreign_object.save()
    super(MyModel, self).save(*args, **kwargs)
这假定已创建self.foreign\u对象。
另外,save不返回任何值,因此不需要返回。

avg
字段必须定义为
blank=True
,以便您可以在表单上保留该字段为空。抱歉,我不得不稍微澄清一下我的问题。我的意思是,我想保存到相关外部对象的model字段。(ForeignKey中的一个字段)@HighLife上面的代码片段没有帮助吗?只需设置相关对象的属性并执行相关对象的save()方法。@fest是的,但我仍然有一些问题
self.foriegnobject.avg=float(总和([self.field1,self.field2])/2
返回super(models.Model,self.foriegnobject)。保存(*args,**kwargs)
?@HighLife是,看起来正确。您可以用您尝试过的方法更新您的问题,并解释您有哪些问题。
avg
字段必须用
blank=True
定义,以便您可以在表单上保留该字段为空。很抱歉,我不得不稍微澄清一下我的问题。我的意思是,我想保存到相关外部对象的model字段。(ForeignKey中的一个字段)@HighLife上面的代码片段没有帮助吗?只需设置相关对象的属性并执行相关对象的save()方法。@fest是的,但我仍然有一些问题
self.foriegnobject.avg=float(总和([self.field1,self.field2])/2
返回super(models.Model,self.foriegnobject)。保存(*args,**kwargs)
?@HighLife是,看起来正确。您可以用您试图做的事情更新您的问题,并解释您有哪些问题。请查看我更新的答案-保存方法中缺少第一个参数。@fest Haha X)。但仍然存在另一个问题。请查看我的更新答案-保存方法中缺少第一个参数。@fest Haha X)。不过还有另一个问题。