2015-11-03 50 views
0

說明Django的覆蓋模型保存方法將未指定字段設置爲null

我在eiysTblModels的我的模型延伸,因爲我們使用的inspectdb Django的manage.py的選項。由於它覆蓋了models.py,我們不會觸摸models.py,而是將我們的擴展寫入eiysTblModels。

問題

無論如何,當我打電話edit_group功能,它正確地設置蛞蝓和日期作爲規定,但它會覆蓋其他領域,如IS_ACTIVE,isapproved等爲NULL,最初被設置爲1。

vieys.py

def edit_group(request,group_id): 

    groupinfo = request.POST 

    group = eiysTblGroup(id = group_id) 
    group.name = groupinfo.get('group-name','') 

    group.save() 

eiysTblModels.py

class eiysTblGroup(TblGroup): 
class Meta: 
    proxy = True 
def save(self, *args, **kwargs): 
    self.slug = slugify(self.name) 
    if not self.id: 
     self.date_created = datetime.now().strftime('%Y-%m-%d %H:%M:%S') 
     self.isactive = 1 
    self.date_last_modified = datetime.now().strftime('%Y-%m-%d %H:%M:%S') 
    super(TblGroup, self).save(*args, **kwargs) 

models.py

class TblGroup(models.Model): 
    id = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=250, blank=True) 
    date_created = models.DateTimeField(blank=True, null=True) 
    date_last_modified = models.DateTimeField(blank=True, null=True) 
    creator = models.ForeignKey(AuthUser, blank=True, null=True) 
    group_photo_url = models.CharField(max_length=250, blank=True) 
    isactive = models.IntegerField(blank=True, null=True) 
    slug = models.CharField(max_length=250, blank=True) 
    code = models.IntegerField(blank=True, null=True) 
    class Meta: 
     managed = False 
     db_table = 'tbl_group' 

摘要

基本上,我需要的是自動更新date_last_modified,DATE_CREATED和蛞蝓當我救他們,不更新任何其他部分爲NULL。

回答

0

我相信你的問題的答案可以在這裏找到:

Automatic creation date for django model form objects?

你想利用這些,因爲Django的可以自動爲你沒有任何需要額外的互動設置創建和修改日期。

models.DateTimeField(auto_now_add=True) 
models.DateTimeField(auto_now=True) 

至於蛞蝓,縮短save()方法:

def save(self, *args, **kwargs): 
    self.slug = slugify(self.name) 
    super(eiysTblGroup, self).save(*args, **kwargs) 
+0

謝謝你的反應速度快,但我想設置塞過了,也許我會被要求做更多如有必要,將來會有變化。 –

+0

我用slu updated更新了答案。希望能幫助到你! – Nhor

1

很顯然,我的錯誤的部分是鑑於:

group = eiysTblGroup(id = group_id) 

我不知道我該怎麼做這樣一個愚蠢的錯誤。 正確的形式應該是:

group = eiysTblGroup.objects.get(id = group_id) 

然後它工作正常...

相關問題