我有两个类:A和B.每个A都有一个有序的Bs排名,每个B都有一个有序的As排名。
我的models.py:
class A(models.Model):
name = models.CharField(max_length=200)
...
class B(models.Model):
name = models.CharField(max_length=200)
...
class Ranking(models.Model):
a = models.ForeignKey(A)
b = models.ForeignKey(B)
rankofa = models.IntegerField()
rankofb = models.IntegerField()
我需要做的例子:
我想将排名设置为对象的数组/列表(或者某种方式不会继续进行昂贵的数据库调用),但不确定如何将其作为Django模型/数据库解决方案。
任何和所有的想法都赞赏。
答案 0 :(得分:2)
您需要的是intermediary M2M relation
class Seller(models.Model):
name = models.CharField(max_length=200)
class Customer(models.Model):
name = models.CharField(max_length=200)
feedbacks = models.ManyToManyField(Seller, through='Feedback', related_name='feedbacks')
class Feedback(models.Model):
seller = models.ForeignKey(Seller)
customer = models.ForeignKey(Customer)
seller_feedback = models.IntegerField()
customer_feedback = models.IntegerField()
查找客户排名的卖家数量:
customer.feedbacks.all().count()
按顺序对特定卖家排名的所有客户进行迭代,并评估一些客户财产。
for customer in seller.feedbacks.all():
do_something(customer)
转到卖家排名最低的客户,找到该客户给予卖家的排名。
def lowes_feedback_response(seller):
try:
return models.Feedback.filter(seller=seller).order_by('-seller_feedback')[0].customer_feedback
except models.Feedback.DoesNotExist:
return None
我没有评估代码但是你得到了基本的想法