【发布时间】:2016-07-26 06:41:54
【问题描述】:
我想在 Django 1.9 中使用 Django 表单编辑一行:
所以我做的是
对于 get 请求,我初始化了表单实例 (views.py)
def get(self, request):
myModel = model.myModel.objects.get(user=request.user)
form_instance = MyForm(initial=myModel.__dict__)
return render(request, 'mytemplate.html', {'form': form_instance} )
def post(self, request):
form_instance = MyForm(request.POST)
if form_instance.is_valid():
form_instance.save()
return redirect('..')
return render(request, 'mytemplate.html', {'form': form_instance} )
这是我的models.py
class MyModel(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
Booth = models.OneToOneField(BoothLocation)
class BoothLocation(models.Model):
LocationID = models.CharField(max_length = 25)
我有一个 forms.py
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ('Booth')
labels = {'Booth':_('Booth Chosen')}
我的问题是我的模型有一个一对一的字段,因此每当我执行时
form_instance = MyForm(request.POST)
它将返回一个错误,指出 onetoonefield 必须是唯一的,但我只是在更新它。有没有办法覆盖这个验证?
顺便说一句,该领域确实需要一对一。
【问题讨论】:
-
是的,只是一个错字。 :) 但问题仍然是一样的。 :)
-
这可能会对您有所帮助。切换到外键stackoverflow.com/questions/20909039/…
-
谢谢@user2853437。但问题是它确实需要一对一,我只需要编辑它。
-
发布您的完整视图
-
……还有模型和表格!
标签: python django django-models django-forms