簡體   English   中英

Django - 表單驗證錯誤

[英]Django - Form validation error

我有這樣的模型

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'

我也有這樣的觀點

def photo_match(request):
''' performs an update in the db when a user chooses a photo '''

    form = EntityForm(request.POST)
    form.save()

我的EntityForm看起來像這樣:

class EntityForm(ModelForm):
    class Meta:
        model = Entity

我的模板的表單將POST返回到具有以下值的視圖:
{u'username':[u'admin'],u'entity_parent':[u'PERSON'],u'entity_id':[u'152097'],u'photo_id':[u'2200734'],你'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()

當然,您希望對查找實體的方式更加強大一些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM