我有一个看起来像这样的Django模型.
class Solution(models.Model):
'''
Represents a solution to a specific problem.
'''
name = models.CharField(max_length=50)
problem = models.ForeignKey(Problem)
description = models.TextField(blank=True)
date = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = ("name", "problem")
Run Code Online (Sandbox Code Playgroud)
我使用表单添加如下所示的模型:
class SolutionForm(forms.ModelForm):
class Meta:
model = Solution
exclude = ['problem']
Run Code Online (Sandbox Code Playgroud)
我的问题是,SolutionForm不验证Solution的unique_together约束,因此,它IntegrityError在尝试保存表单时返回一个.我知道我可以validate_unique用来手动检查这个,但我想知道是否有任何方法可以在表单验证中捕获它并自动返回表单错误.
谢谢.
[我已经在Django用户发布了这个| Google网上论坛也是.]
使用内联formset文档中的示例,我能够编辑属于特定模型的对象(使用模型形式).我一直在尝试使用相同的模式来 创建使用内联表单集的新对象,但是无法清除我的脑袋以便为此目的带出一个工作视图.
使用与上述链接相同的示例,我将如何创建"作者"模型的新实例及其相关的"书籍"对象?
如何在ModelForm中创建某些字段= False?
如果我有:
class ThatForm(ModelForm):
class Meta:
widgets = {"text": Textarea(required=False)}
Run Code Online (Sandbox Code Playgroud)
或者,如果我有:
class ThatForm(ModelForm):
text = Textarea(required=False)
Run Code Online (Sandbox Code Playgroud)
Django回归:
__init__() got an unexpected keyword argument 'required'
Run Code Online (Sandbox Code Playgroud) 我的模型与以下内容不同:
class Bike(models.Model):
made_at = models.ForeignKey(Factory)
added_on = models.DateField(auto_add_now=True)
Run Code Online (Sandbox Code Playgroud)
所有用户都可以在多家工厂工作,因此,他们的用户配置文件都有一个ManyToManyField到Factory.
现在我想构建一个ModelFormfor,Bike但我希望made_at列表只包含当前用户工作的工厂.这个想法是,用户应该能够添加他们组装好的自行车并进入自行车所在的工厂.
我怎么做?
我正在尝试使用ModelForm:
from django.db import models
from django.forms import ModelForm
class Car(models.Model):
carnumber = models.CharField(max_length=5)
def __unicode__(self):
return self.carnumber
class PickForm(ModelForm):
class Meta:
Model = Car`
Run Code Online (Sandbox Code Playgroud)
我检查了这个,我找不到我的错误.当我在浏览器中调用视图时,它会给我以下错误:
ModelForm has no model class specified
Run Code Online (Sandbox Code Playgroud)
我已经测试了在同一个URL上用简单的"foo bar"代码调用模型的视图,但是当我尝试这个代码时,我得到了上面的类错误.
我想为我的modelform中的标签创建一个自定义名称,这是我的forms.py
class PostForm(forms.ModelForm):
body = forms.CharField(widget=PagedownWidget)
publish = forms.DateField(
widget=forms.SelectDateWidget,
initial=datetime.date.today,
)
class Meta:
model = Post
fields = [
"title",
"body",
"author",
"image",
"image_url",
"video_path",
"video",
"publish",
"tags",
"status"
]
Run Code Online (Sandbox Code Playgroud)
我想改变而不是视频我希望它说嵌入.我检查了文档,但没有找到任何可以帮助我做到这一点.是不是我不得不重新安排我的模型?如果是这样的话?谢谢
我希望从我的视图中动态更新ModelForm的内联Meta类.尽管此代码似乎更新在Meta类中的排除列表,从输出as_p(),as_ul()等不反映更新的Meta排除.
我假设在创建ModelForm时不是在as_*()调用时生成html .有没有办法强制更新HTML?
这甚至是最好的方法吗?我只是假设这应该工作.
思考?
from django.forms import ModelForm
from testprogram.online_bookings.models import Passenger
class PassengerInfoForm(ModelForm):
def set_form_excludes(self, exclude_list):
self.Meta.exclude = excludes_list
class Meta:
model = Passenger
exclude = []
Run Code Online (Sandbox Code Playgroud) 我是Django的新手,我遇到了使用ModelForm处理图像上传的问题.我的模型如下:
class Project(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=2000)
startDate = models.DateField(auto_now_add=True)
photo = models.ImageField(upload_to="projectimg/", null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
模型形式如下:
class AddProjectForm(ModelForm):
class Meta:
model = Project
widgets = {
'description': Textarea(attrs={'cols': 80, 'rows': 50}),
}
fields = ['name', 'description', 'photo']
Run Code Online (Sandbox Code Playgroud)
而View功能是:
def addProject(request, template_name):
if request.method == 'POST':
addprojectform = AddProjectForm(request.POST,request.FILES)
print addprojectform
if addprojectform.is_valid():
newproject = addprojectform.save(commit=False)
print newproject
print request.FILES
newproject.photo = request.FILES['photo']
newproject.save()
print newproject.photo
else:
addprojectform = AddProjectForm()
newProposalNum = projectProposal.objects.filter(solved=False).count()
return render(request, template_name, {'addprojectform':addprojectform,
'newProposalNum':newProposalNum})
Run Code Online (Sandbox Code Playgroud)
模板是: …
我是django和jquery的新手.我正在开发一个基于django的应用程序,我在表单中有3个下拉菜单.1.校园2.学校3.中心
等级是校园有学校和学校有中心.我想将这些下拉列表链接起来.
例如,我有3个校区,比如Campus1,Campus2,Campus3.如果我选择Campus1,我应该只选择校园1中的学校并继续学习,如果我选择了School1,那么我需要能够选择School1的中心,所有其他选项都应该隐藏起来.
我在网上搜索并试过这个http://blog.devinterface.com/2011/02/how-to-implement-two-dropdowns-dependent-on-each-other-using-django-and-jquery/ 但它似乎不适合我.我还检查了这个http://www.javascriptkit.com/script/script2/triplecombo.shtml 但由于我使用ModelForm来创建表单,这不符合我的需要.
请指导我这样做.
谢谢
我正在为Django ModelForm添加一个额外的字段:
class form(forms.ModelForm):
extra_field = forms.CharField(label='Name of Institution')
class Meta:
model = db_institutionInstitution
fields = ['conn_kind','time','inst_name2']
Run Code Online (Sandbox Code Playgroud)
表格实际上工作正常,但我不能预先填充它.我用它来modelformset_factory:
formset = modelformset_factory(db_institutionInstitution,form=form)
Run Code Online (Sandbox Code Playgroud)
我手动运行查询集并在formset中添加其他表单所需的字典中的条目.但是,当我打电话时:
formset1 = formset(prefix='brch',queryset=qs1)
Run Code Online (Sandbox Code Playgroud)
在extra_field按预期(其余工作正常)没有预先填充.
有人可以帮忙吗?
django ×10
modelform ×10
python ×3
django-forms ×2
forms ×2
field ×1
jquery ×1
required ×1
validation ×1