[英]Django self-referential class for most similar car
假设我有一个Car
类,其中包含许多描述其功能的字段。 我使用{{ object.price }}
等在html中调用并显示这些功能。
使用最近邻居算法,我为每辆汽车计算了最相似汽车的列表,并希望能够显示例如五辆最相似汽车的特征。 想要在我的课程中用于most_similar_cars
的字段类型吗? 请注意,这种关系不是对称的。 也就是说,虽然汽车B可能是汽车A的最近邻居,但汽车A不一定是汽车B的最近邻居。我还需要能够区分最相似,第二相似,第三等。
models.py
from django.db import models
# Create your models here.
class Car(models.Model):
"""A model of a bureau."""
car_model = models.CharField(max_length = 50)
price = models.IntegerField(default=1)
most_similar = ?
def __str__(self):
return self.car_model
我真的希望有人能提供帮助。 非常感谢您。
您可能希望使用具有自定义关系模型的不对称M2M来订购最近的汽车。 在您的情况下:
class Car(models.Model):
"""A model of a bureau."""
car_model = models.CharField(max_length = 50)
price = models.IntegerField(default=1)
most_similar = models.ManyToManyField('self', symmetrical=False, through='CarRelation')
def __str__(self):
return self.car_model
class CarRelation(models.Model):
car = models.ForeignKey(Car)
close_car = models.ForeignKey(Car, related_name='nearest_cars')
order = models.PositiveIntegerField()
class Meta:
ordering = ('order',)
然后,您可以添加如下关系:
a = Car.objects.create(car_model='A')
b = Car.objects.create(car_model='B')
relation = CarRelation.objects.create(car=a, close_car=b, order=1)
Django docs中的更多信息: https : //docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.ManyToManyField.symmetrical
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.