模型:
class Subjects (models.Model):
name = models.CharField(max_length=100)
places = models.CharField(max_length=100)
class Student (models.Model):
name = models.CharField(max_length=40)
lastname = models.CharField(max_length=80)
subjects = models.ManyToManyField(Subjects, blank=True)
Run Code Online (Sandbox Code Playgroud)
当我使用上面的模型时,Django创建了appname_student_subjects.
appname_student_subjects表例如,如下所示:
id | student_id | subjects_id
-----------------------------------------
1 | 1 | 10
2 | 4 | 11
3 | 4 | 19
4 | 5 | 10
...
~1000
Run Code Online (Sandbox Code Playgroud)
如何访问subjects_id字段并计算上表中subject_id存在的次数(然后使用它执行某些操作).例如:如果id为10的主题存在两次模板显示2.我知道我应该使用"len"结果,但我不知道如何访问subject_id字段.使用外键我在for循环中这样做:
results_all = Students.objects.filter(subject_id='10')
result = len(results_all)
Run Code Online (Sandbox Code Playgroud)
然后我将结果传递给模板并在for循环中显示它,但它不是外键,所以它不起作用.
所以,我正在研究Django Book和django文档,我无法理解这个例子:
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
这是关于模板的,我不知道如何编写Context.如何从列表中获取名为"name"的属性?如果我创建一个字典,就不可能像本例中那样使用for循环.我已经像这样编码但是它不起作用:
athlete_list = {'name' = ['Athlete1', 'Athlete2', 'Athlete3']}
Context({'athlete_list':athlete_list})
Run Code Online (Sandbox Code Playgroud)
如果我将athlete_list变量更改为普通列表(不是字典),模板中的"athlete.name"也不会起作用.我不认为这是一本书中的错误,它可能很容易解决,但我无法得到它.
我创建了一个包含一些类的模型:
class Student(models.Model):
name = models.CharField(max_length=40)
last_name = models.CharFIeld(max_length=40)
(...)
Run Code Online (Sandbox Code Playgroud)
在底部的相同models.py文件中我添加了一个对应于我的一个模型的类,所以我可以创建一个表单:
class StudentForm(ModelForm):
class Meta:
model = Student
Run Code Online (Sandbox Code Playgroud)
如何自定义通过ModelForm类创建的表单字段?我正在阅读django文档,我无法理解覆盖默认类型部分.例如,在文档中他们说这将起作用:
class ArticleForm(ModelForm):
pub_date = DateField(label='Publication date')
class Meta:
model = Article
Run Code Online (Sandbox Code Playgroud)
但是当我输入我的价值观时,它不起作用.我无法定义我的标签:
class StudentForm(ModelForm):
name = CharField(label='New label')
class Meta:
model = Student
Run Code Online (Sandbox Code Playgroud)
我是否必须创建一个类似forms.py的文件,其中包含与Model类相同的字段,然后自定义它们?是否可以仅使用模型表单更改单个字段css属性,如宽度,高度?
我是sql查询的新手.我有两张桌子:
表格1:
id_s name post_code city subject
------------------------------------------
1 name1 postal1 city1 subject1
2 name2 postal2 city2 subject2
3 name3 postal3 city3 subject3
4 name4 postal4 city4 subject4
...
~350
Run Code Online (Sandbox Code Playgroud)
表2:
id_p name post_code city subject
------------------------------------------
1 name1 postal1 city1 subject1
2 name2 postal2 city2 subject2
3 name3 postal3 city3 subject3
4 name4 postal4 city4 subject4
...
~1200
Run Code Online (Sandbox Code Playgroud)
我想加入两个表,并删除具有相同名称和邮政编码的条目.我找到了一些关于如何做的答案但是它们太复杂了.
从Django文档中获取简单的重组示例:
{% regroup cities by country as country_list %}
<ul>
{% for country in country_list %}
<li>{{ country.grouper }}
<ul>
{% for item in country.list %}
<li>{{ item.name }}: {{ item.population }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
如果country.grouper是在带有choices = CHOICES_FIELD的模型中声明的Char字段,如何在模板中显示它的详细名称?通常我会采用Model.get_FOO_display,但country.grouper.get_country_list_display当然不会起作用.
自定义模板标签只是选择吗?