所以我已经在这个问题上工作了很多天,无法使它起作用。基本上我有三种模式
class Year(models.Model):
year = models.CharField()
class Book(models.Model):
name = models.CharField(
verbose_name = "Library Name",
max_length = 255
)
author = models.ForeignKey(
Author,
on_delete=models.CASCADE
)
year = models.ForeignKey(
Year,
on_delete=models.CASCADE
)
class Author(models.Model):
name = models.CharField(
verbose_name = "Author's Name",
max_length = 255
)
num = models.CharField(
max_length = 255,
default=0
)
例如,如果我过了2018年,我想检索所有在2018年出版书籍的作者。
我尝试了类似Year.objects.filter(year=2018).filter()
,不知道如何过滤其余部分
答案 0 :(得分:2)
您可以使用双下划线('__'
)来过滤相关模型的内容,因此可以过滤{{}的year
关系的year
属性Book
中的1}}:
Author
Author.objects.filter(book__year__year='2018').distinct()
很有用,因为否则在2018年出版多本书的.distinct()
会在查询集中出现多次次。
话虽这么说,在这里构造Author
对象似乎很奇怪,而使其成为Year
则更加奇怪(因为按CharField
进行排序将导致*按字典顺序进行排序) 。 year
模型中的num
字段也可能也应该是IntegerField
[Django-doc]。
更好的建模方法可能是:
Author
在这种情况下,我们可以查询class Book(models.Model):
name = models.CharField(
verbose_name = "Library Name",
max_length = 255
)
author = models.ForeignKey(
Author,
on_delete=models.CASCADE
)
year = models.IntegerField()
class Author(models.Model):
name = models.CharField(
verbose_name = "Author's Name",
max_length = 255
)
num = models.IntegerField(default=0)
位在2018年出版了一本书的用户,
Author
但是,目前尚不清楚Author.objects.filter(book__year=2018).distinct()
在这里做什么。如果它可以容纳书籍数量,那么使用num
可能是更好的选择,因为它可以避免数据重复。
答案 1 :(得分:1)
我可以看到年份是 CharField ,因此您必须使用引号进行查询,并且必须使用查找(function start(){
var fst = document.getElementById("fst").innerHTML = Math.floor(Math.random()*10);
var snd = document.getElementById("snd").innerHTML = Math.floor(Math.random()*10);
return fst+snd;
}
var x = start()
function validate(){
var txt = document.getElementById("txt").value;
if(txt==x){
console.log('Correct Answer');
} else console.log('Wrong Answer');
start();
}
)来查询相关字段模型。
year__year