Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在何处为模型添加方法?_Django - Fatal编程技术网

Django 在何处为模型添加方法?

Django 在何处为模型添加方法?,django,Django,我有以下场景,我想知道在Django中实现它的最佳方法: 我有两种型号产品和个人。我想给一个评分,如果一个产品适合这个人。我的问题不是如何计算,而是如何在Django中计算 我一直在想我可以有这样的东西 Product.object.getscore(Person) Or Person.object.getscore(Product) 那么,在模型中,我是如何做到这一点的(忘记实际得分,这不是问题)?但是,将这种方法放在何处,如何在模型中使用?我不想存储分数,它必须基于传递的对象是动态的

我有以下场景,我想知道在Django中实现它的最佳方法:

我有两种型号产品个人。我想给一个评分,如果一个产品适合这个人。我的问题不是如何计算,而是如何在Django中计算

我一直在想我可以有这样的东西

Product.object.getscore(Person) 
Or 
Person.object.getscore(Product)
那么,在模型中,我是如何做到这一点的(忘记实际得分,这不是问题)?但是,将这种方法放在何处,如何在模型中使用?我不想存储分数,它必须基于传递的对象是动态的


谢谢。

您可以通过以下方式在任一类中实现该方法:

注意:我的假设是这是一种100万人的关系:

class Product(models.Model):
  person = ForeignKey(Person)
  ...
  def get_score(self):
    # do your thing here
    # use a person reference
    if self.person:
      # calculate score in one way
    else:
      # calculate score some other way 
    return score
或者您可以在
Person
类中实现它。这完全取决于你是想从人的角度工作还是从产品的角度工作

您对
Product.objects.get_score()
的建议适用于您对整个查询集而不是单个项目执行计算时

更新:澄清产品与个人无关后

在这种情况下,您可以简单地将其实现为

class Product(models.Model):
  ...

  def get_score(self, person):
    # check the conditions you need to calculate the score
    if person.has_some_property and self.has_some_product_property:
      # calculate score in one way
    else:
      # calculate score some other way 
    return score
使用产品实例,您可以简单地执行以下操作:

person = Person.objects.get(pk=<some_id>)
product = Product.objects.get(pk=<some_id>)
product.get_score(person)
person=person.objects.get(pk=)
product=product.objects.get(pk=)
产品。获得_分数(人)

产品和人之间的关系是什么?1-1,1-M,M-M?这取决于您是否要计算任一模型的整个查询集的分数,或者作为任一模型实例的属性。产品与个人无关。我想做的就是把person对象放到产品中,做一个简单的计算。计算基于人员类型和产品类型。i、 如果一个人有x,而自己有x给y,那么另一种方式是产品有x,而自己有x给y