class Feedback(models.Model):
#choices
NEGATIVE = -1
NEUTRAL = 0
POSITIVE = 1
FEEDBACK_TYPE_CHOICES = (
(NEGATIVE, 'Negative feedback'),
(NEUTRAL, 'Neutral feedback'),
(POSITIVE, 'Postive feedback'),
)
#database fields
short_description = models.CharField('Short opinion: ' ,max_length=100, default='SOME STRING')
text = models.TextField('Detailed opinion: ', max_length=300, default='SOME STRING')
feedback = models.IntegerField('Feedback choice: ', max_length=3, choices=FEEDBACK_TYPE_CHOICES, default = 1)
pub_date = models.DateTimeField('date published')
#def reputation(self):
# return ((self.positivefeedback-self.negativefeedback)/(self.positivefeedback+self.neutralfeedback+self.negativefeedback))*100
class User(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
email = models.EmailField(max_length=100)
eddies = models.IntegerField()
premium = models.BooleanField()
feedback = models.ForeignKey(Feedback, on_delete=models.CASCADE)
def __str__(self):
return self.username
我正在尝试存档模型OneToMany,其中1个用户可以有多个反馈。如何归档可以计算特定用户反馈结果得分的函数?
答案 0 :(得分:1)
对于这种关系,“ 用户有很多反馈”,反馈类应该已经存储了它所对应的用户,而不是现在的相反用户。
然后,您可以使用以下方法获取包含特定用户的反馈列表(查询集):
Feedback.objects.filter(user=user_you_want)
其中“ user_you_want”是User类的对象
答案 1 :(得分:1)
我认为您需要按以下方式更改代码,它可能会按您的意愿工作
NEGATIVE = -1
NEUTRAL = 0
POSITIVE = 1
FEEDBACK_TYPE_CHOICES = (
(NEGATIVE, 'Negative feedback'),
(NEUTRAL, 'Neutral feedback'),
(POSITIVE, 'Postive feedback'),
)
feedback = models.IntegerField('Feedback choice: ', max_length=3, choices=FEEDBACK_TYPE_CHOICES, default = 1)
您正在将默认值1作为整数传递,但是您具有char字段。所以我想这行不通。用我的代码替换 确保您从选择中删除引号,我们需要将值传递为整数