Igo*_*sky 3 django django-templates django-models django-forms
我有这样的模型:
class Entity(models.Model):
entity_name = models.CharField(max_length=100)
entity_id = models.CharField(max_length=30, primary_key=True)
entity_parent = models.CharField(max_length=100, null=True)
photo_id = models.CharField(max_length=100, null=True)
username = models.CharField(max_length=100, null=True)
date_matched_on = models.CharField(max_length=100, null=True)
status = models.CharField(max_length=30, default="Checked In")
def __unicode__(self):
return self.entity_name
class Meta:
app_label = 'match'
ordering = ('entity_name','date_matched_on')
verbose_name_plural='Entities'
Run Code Online (Sandbox Code Playgroud)
我也有这样的观点:
def photo_match(request):
''' performs an update in the db when a user chooses a photo '''
form = EntityForm(request.POST)
form.save()
Run Code Online (Sandbox Code Playgroud)
我的EntityForm看起来像这样:
class EntityForm(ModelForm):
class Meta:
model = Entity
Run Code Online (Sandbox Code Playgroud)
我的模板的表单将POST返回到具有以下值的视图:
{u'username':[u'admin'],u'entity_parent':[u'PERSON'],u'entity_id':[u'152097' ],'u'photo_id':[u'2200734'],u'entity_name':[u'AJ McLean'],u'status':[u'Checked Out'],u'date_matched_on':[u'5/20/2010 10:57 AM']}
而form.save()抛出此错误:
photo_match中的例外:无法更改实体,因为数据未验证.
我一直试图弄清楚为什么会发生这种情况,但无法确切地指出确切的问题.我可以在管理界面中更改我的实体就好了.如果有人对此有所了解我会非常感激!
谢谢,伊戈尔
如果您尝试更新的实体已经保存,那么您需要在绑定表单时提供实例参数,否则save将尝试执行INSERT而不是UPDATE,并且新对象将不会验证(签出django docs here).
尝试:
def photo_match(request):
''' performs an update in the db when a user chooses a photo '''
entity = Entity.objects.get(pk=request.POST['entity_id'])
form = EntityForm(request.POST, instance=entity)
form.save()
Run Code Online (Sandbox Code Playgroud)
当然,您希望对查找实体的方式更加强大一些.
| 归档时间: |
|
| 查看次数: |
5504 次 |
| 最近记录: |