django 怎么从数据库读数据,成为表单默认值

django 怎么从数据库读数据,成为表单默认值,第1张

最简单的办法是。为数据库的表建立一个model。具体做法是这样子。

1.在settings.py里设置数据库连接方式。连接错误后面都没有办法

2.在models设置一个数据库表的对应数据结构,通常叫关系对象模型,所以叫model,它就是一个类。你可以用django-admin.py ...probe,似乎是这个命令,就是一个数据库的探测命令,可以根据表,自动生成model的代码。当然如果你先写了model的代码就可以用syncdb命令生成数据库的表

3.在urls.py里设置一个URL的path,当浏览器访问这个path时就可以打开对应的view中的函数

4.在view里

4.1 result=modelclass.objects.all()这个命令可以取出所有的记录

4.2 然后你可以直接将结果传递给模板。由模板显示。这是最合理的办法

4.3 在模板里 {% for cols in result %}

4.4 <li>cols.field1</li>

大约就是这样子。可能说的太粗。你对着教程看就知道了。

首先,在views中需要判断你的form合不合法(不合法请查看InputForm与输入的是否符合),可以在if form.is_valid():并列的地方添加一个else,print form看看,可以类似form.company.errors.其实如果合法要存到数据库中,你的model方法有问题,一般是add_input=Input(xx=xx,xx=xx)

add_input.save()

或者Input.objects.create(xx=xx=,xx=xx)#并不需要赋值,和调用save()方法,因为create内部有调用save方法

如果你使用 Django 的模型表单 (model form) 生成表单,可以使用 Django 查询数据库进行筛选,以便仅显示与特定用户相关的分类。

首先,在视图函数中,查询数据库并返回与特定用户相关的分类:

from django.shortcuts import render

from .models import Category

def my_view(request):

user_categories = Category.objects.filter(user=request.user)

return render(request, 'my_template.html', {'categories': user_categories})

然后,在模板中,您可以在生成表单时使用该分类集:

<form method="post">

{% csrf_token %}

{{ form.as_p }}

<input type="submit" value="Submit">

</form>

最后,在表单类中,您可以重写初始化方法,以仅使用用户分类:

from django import forms

from .models import Table2

class Table2Form(forms.ModelForm):

class Meta:

model = Table2

fields = ('category',)

def __init__(self, user, *args, **kwargs):

super().__init__(*args, **kwargs)

self.fields['category'].queryset = Category.objects.filter(user=user)

最后,在视图函数中实例化表单,并将用户传递给表单类:

from django.shortcuts import render

from .forms import Table2Form

def my_view(request):

user_categories = Category.objects.filter(user=request.user)

form = Table2Form(request.user, instance=table2_instance)

return render(request, 'my_template.html', {'form': form})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6699281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存