使用 Django,如何在模板中动态设置 ModelForm 字段值?

     2023-02-24     82

关键词:

【中文标题】使用 Django,如何在模板中动态设置 ModelForm 字段值?【英文标题】:Using Django, how do I set a ModelForm field value dynamically in the template? 【发布时间】: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   
                                    % 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>

【问题讨论】:

【参考方案1】:

我找到了一个动态迭代模板并完成 ForeignKey(选择)字段的解决方案。我需要将 for 迭代器设置为等于选择选项

<form method="POST" id=" r.report_name ">
    % csrf_token %
    <p hidden>
         favform.directory_user 
        <select name="user_report" required="" id="id_user_report">
           <option value=" r.id " selected></option>
        </select>
    </p>
     favform.favorited 
</form>

但是,我觉得我正在使用 Django 表单,而不是使用基础架构...

【讨论】:

如何使用“include”标签在 Django 中动态包含模板

】如何使用“include”标签在Django中动态包含模板【英文标题】:HowtoincludetemplatesdynamicallyinDjangousing"include"tag【发布时间】:2012-09-2202:16:49【问题描述】:我有10个名为1.html、2.html..etc的html文件我想要的是根据一个变量,... 查看详情

在 Django 中,如何使用模板和 DB 对象中使用的动态 URL 实现样板 HTML 变量?

】在Django中,如何使用模板和DB对象中使用的动态URL实现样板HTML变量?【英文标题】:InDjango,howtoimplementboilerplateHTMLvariableswithDynamicURLsusedintemplatesandDBobjects?【发布时间】:2020-01-0821:28:34【问题描述】:在Django中,在我的数据库中... 查看详情

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?

】如何在扩展另一个文件的django模板中使用带有动态内容的html块片段?【英文标题】:howdoIusehtmlblocksnippetswithdynamiccontentinsideadjangotemplatethatextendsanotherfile?【发布时间】:2011-02-0920:45:51【问题描述】:有人可以帮我找出在Django模... 查看详情

如何在渲染django模板时动态设置表单选择字段的初始值

】如何在渲染django模板时动态设置表单选择字段的初始值【英文标题】:Howcanyoudynamicallysetinitialvalueofformselectfieldatthetimeofrenderingdjangotemplate【发布时间】:2020-12-1414:37:29【问题描述】:我需要多次渲染选择字段,每个字段都有预... 查看详情

如何在 django 模板中显示保存的、动态创建的图像?

...为模板文件夹中的png。但是,当我尝试在模板html文件中使用&lt;img&gt;标记显示此保存的图像时,图像不会显示。这是我的文件夹结 查看详情

如何使用 javascript(或类似的)在 Django 模板中切片列表项

】如何使用javascript(或类似的)在Django模板中切片列表项【英文标题】:HowtoslicelistitemsinDjangoTemplateusingjavascript(orsimilar)【发布时间】:2020-09-1409:53:46【问题描述】:我正在使用带有一些数据的chartJs,我希望用户能够动态更改图... 查看详情

我将如何在 Django 模板标签中使用模板上下文变量的值? [复制]

】我将如何在Django模板标签中使用模板上下文变量的值?[复制]【英文标题】:HowwillIusetemplatecontextvariable\'svalueinsideDjangotemplatetags?[duplicate]【发布时间】:2018-06-0515:19:54【问题描述】:在Django中,我见过trans标签,将翻译字符串... 查看详情

如何在剑道模板中动态设置列

...根据用户偏好动态更改。如何动态创建剑道模板?我正在使用剑道JavaScript,我可以切换到剑道MVC如果同样的事情我可以在那里实现。还有其他方法可以实现吗?<scriptid="row 查看详情

Django:如何在 ajax 中返回模型表单集并在模板中使用

】Django:如何在ajax中返回模型表单集并在模板中使用【英文标题】:Django:Howtoreturnmodelformsetinajaxanduseintemplate【发布时间】:2012-06-2117:05:27【问题描述】:我需要在运行时使用ajax将表单动态添加到我的表单集中,我指的是Dynamical... 查看详情

在 django 中使用 mailsnake 使用模板 id 动态创建活动

】在django中使用mailsnake使用模板id动态创建活动【英文标题】:Dynamicallycreatingcampaignusingtemplateidusingmailsnakeindjango【发布时间】:2012-10-0203:18:28【问题描述】:我使用django框架中的mailsnake从我的网站动态创建活动。想要将数据和图... 查看详情

如何在 jinja2 中使用 django 中的动态变量(variable.variable.variable)

】如何在jinja2中使用django中的动态变量(variable.variable.variable)【英文标题】:Howtousedynamicvariable(variable.variable.variable)injinja2withdjango【发布时间】:2019-11-0401:44:03【问题描述】:“我想在模板中显示名称而不是ID。我将jinja2和djang... 查看详情

如何使用 django 动态访问会话中的值?

】如何使用django动态访问会话中的值?【英文标题】:howdoiaccessthevaluesinasessiondynamicallyusingdjango?【发布时间】:2017-12-1916:56:20【问题描述】:(Django,Python)我创建了一个书籍对象列表,它在我的views.py中作为上下文与当前会话一起... 查看详情

如何在 Django 模板中的“带有模板标签”中设置 Django 渲染块值?

】如何在Django模板中的“带有模板标签”中设置Django渲染块值?【英文标题】:HowcanisetaDjangorenderblockvalueinthe"withtemplatetag",inDjangoTemplate?【发布时间】:2019-12-0415:52:19【问题描述】:我根据Django应用程序中的不同视图显示... 查看详情

如何在 django 模板中显示评论及其回复?

】如何在django模板中显示评论及其回复?【英文标题】:Howtodisplaycommentsandit\'srepliesindjangotemplates?【发布时间】:2018-02-2509:10:48【问题描述】:我想在模板中显示评论和回复。但是有一个问题,每个回复都可能有其他回复。下面... 查看详情

Django 模板中的动态分页

...【发布时间】:2016-09-2111:45:25【问题描述】:我正在尝试使用Django作为后端的动态分页来实现css3中的样式。我不知道如何实现它,因为在添加表单以获得用户偏好时,我无法使其工作。也很难使用css3来完全重建表单删除按钮组... 查看详情

Django 模板中的动态内联 CSS 样式

...:21:23【问题描述】:我是Django新手,正在尝试弄清楚如何使用仅对用户所在的当前类别有效的动态CSS。我有一个带有一些类别的侧导航,用户所在的任何类别都应该在使用类时处于活动状态。这就是我目前拥有的东西:%forcategory... 查看详情

Django-CKeditor:如何在模板中显示 RichTextFields

】Django-CKeditor:如何在模板中显示RichTextFields【英文标题】:Django-CKeditor:HowtoshowRichTextFieldsintemplates【发布时间】:2018-01-2314:16:36【问题描述】:问题是我想在模板中显示帖子的内容,但我不知道如何Post的模型是:fromckeditor.fields... 查看详情

07-django模板(代码片段)

...了业务逻辑View与显示的内容Template的解耦。一个视图可以使用任意的模板,一个模板可以被多个视图使用。  模板包含两部分:        静态部分:html、css、js        动态部分:模板语言项目准备:   ... 查看详情