2013-08-01 44 views
5

Đây là admin.py tôi:django quản trị save_model không tiết kiệm mô hình thay đổi

class TransactionInfoAdmin(admin.ModelAdmin): 
    search_fields=['transactionId','subscriptionInfo__customerNumber'] 


    save_on_top = False 
    def has_add_permission(self,request): 
     return False 
    def has_delete_permission(self, request, obj=None): 
     return False 
    def get_readonly_fields(self, request, obj=None): 
     if obj: 
      return self.readonly_fields + ('subscriptionInfo','transactionId','authorizationId','responseCode','operation','batchNumber','merchantId') 
     return self.readonly_fields 

    def save_model(self, request, obj, form, change): 


      #SUCCESS ACTIONS 
      obj.subscriptionInfo.paid = 1 
      obj.save() 




     pass 

Khi tôi lưu obj.subscriptionInfo.paid = 1 của nó không được cập nhật hàng dữ liệu, bất kỳ ý tưởng tại sao?

LƯU Ý: subscriptionInfo là khóa ngoại trong mô hình TransactionInfo ở trên.

-------------------------- CẬP NHẬT ------------------ --------

model.py My

class SubscriptionInfo(models.Model): 
    subscriptionId = models.CharField(max_length=50) 
    customerNumber = models.IntegerField() 
    subscriptionType = models.CharField(max_length=50, default="basic") 
    currency = models.CharField(max_length=50, default="NOK") 
    paid = models.IntegerField(default=0) 

    class Meta: 
     verbose_name = "Subscription Information" 
     verbose_name_plural = "Subscription Information" 

    def __unicode__(self): 
     return u'%s' % self.customerNumber 


class TransactionInfo(models.Model): 
    subscriptionInfo = models.ForeignKey(SubscriptionInfo, db_column='f') 
    authorizationId = models.IntegerField() 
    transactionId = models.TextField() 
    batchNumber = models.IntegerField() 
    merchantId = models.IntegerField() 
    operation = models.CharField(max_length=50) 
    responseCode = models.CharField(max_length=50) 
    paidDate = models.DateField(_("Date"), default=datetime.date.today) 

    class Meta: 
     verbose_name = "Transaction Information" 
     verbose_name_plural = "Transaction Information" 

    def __unicode__(self): 
     return u'Transaction : %s' % self.pk 

Bất cứ ai?

+0

bạn có thể hiển thị mô hình mã của bạn? –

+0

Đã chỉnh sửa câu hỏi của tôi với các kiểu máy của tôi. – Maverick

+0

@GlynJackson Tôi không chắc chắn về nó, bởi vì tôi cần phải thay đổi lĩnh vực trả tiền để 1, đó là mặc định 0 nếu không. – Maverick

Trả lời

6

bạn phải gọi:

obj.subscriptionInfo.save() 

như nó trên một mô hình riêng biệt, nó sẽ giống như thế này:

def save_model(self, request, obj, form, change): 
    #SUCCESS ACTIONS 
    obj.subscriptionInfo.paid = 1 
    obj.subscriptionInfo.save() 
    obj.save() 
+0

tuyệt vời !! Cảm ơn bạn rất nhiều :) – Maverick