【发布时间】:2021-01-27 22:31:43
【问题描述】:
我正在尝试利用复选框字段为用户选择的收藏夹创建模型实例。为了使其正常工作,我需要的最后一点是将其中一个表单字段中的默认值设置为等于循环中的值。我会在views.py 文件、表单本身或模板中使用initialize 参数来执行此操作吗?以下是相关代码: 为 HTML 类标签道歉
models.py
class ReportDirectory(models.Model):
report_name = models.CharField(max_length=300, unique=True, blank=False)
report_desc = models.TextField()
report_type = models.CharField(max_length=300)
report_loc = models.TextField()
slug = models.SlugField(unique=True, max_length=300)
last_update = models.DateTimeField(null=True)
main_tags = models.CharField(max_length=300)
# Renames the item in the admin folder
def __str__(self):
return self.report_name
class Favorite(models.Model):
directory_user = models.ForeignKey(User, on_delete=models.CASCADE)
user_report = models.ForeignKey(ReportDirectory, on_delete=models.CASCADE)
favorited = models.BooleanField(default=False)
def __str__(self):
return str(self.directory_user)+" - "+str(self.user_report)
forms.py
from django import forms
from .models import Favorite
class FavoriteForm(forms.ModelForm):
class Meta:
model = Favorite
fields = '__all__'
widgets = {
'favorited': forms.CheckboxInput(attrs={
'type':'checkbox',
'name':'checkbox',
'onchange':'submit()'
})
}
views.py
from django.shortcuts import render,redirect
from django.views import generic
from .models import ReportDirectory, Favorite
from django.contrib.auth.models import User
from .forms import FavoriteForm
def report_directory(request):
favorite = Favorite.objects.filter(directory_user=request.user.id, favorited=True)
reports = ReportDirectory.objects.exclude(favorite__directory_user=request.user.id, favorite__favorited=True)
favform = FavoriteForm(initial={'directory_user':request.user},)
context = {
'reports':reports,
'favorite':favorite,
'favform':favform
}
if request.method == 'POST':
form = FavoriteForm(request.POST)
if form.is_valid():
form.save()
return redirect('/report_directory')
return render(request, 'counter/report_directory.html',context)
html
<thead>
<tr>
<th class="gls-table-expand">Favorite</th>
<th onclick="sortTable(1)" class="gls-table-expand">Report Type</th>
<th onclick="sortTable(2)" class="gls-table-expand">Report Name</th>
<th class="gls-table-expand">Report Description</th>
<th onclick="sortTable(3)" class="gls-table-expand">Last Updated</th>
<th class="gls-table-expand">Main Tags</th>
<th onclick="sortTable(4)" class="gls-table-expand">View Count</th>
</tr>
</thead>
<tbody id="myTable">
{% for r in reports.all %}
<tr report-name="{{ r.report_name }}">
<td>
<form method="POST">
{% csrf_token %}
{{ favform.favorited }}
</form>
</td>
<td><span><img img width="20" height="20"
{% if r.report_type == 'Tableau' %}
src=" {% static 'images/tableau_icon.svg' %}"
{% elif r.report_type == 'Excel' %}
src=" {% static 'images/excel_icon.svg' %}"
{% elif r.report_type == 'Box' %}
src=" {% static 'images/excel_icon.svg' %}"
{% elif r.report_type == 'Internal Report' %}
src=" {% static 'images/www_icon.svg' %}"
{% endif %}
></span> {{ r.report_type }}</td>
<td><a href="{% url 'report_shell' r.slug %}">{{ r.report_name }}</a></td>
<td>{{ r.summary }}</td>
<td><p class="gls-text-meta gls-margin-remove-top">{{ r.last_update_format }}</p></td>
<td>{{ r.main_tags }}</td>
<td>{% get_hit_count for r %}</td>
</tr>
{% endfor %}
</tbody>
【问题讨论】:
标签: forms django-models django-forms django-views django-templates