Django管理后台的save_model方法没有保存模型更改

7
这是我的 admin.py 文件:
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

当我保存obj.subscriptionInfo.paid = 1时,它没有更新数据行,有任何想法吗?

注意:subscriptionInfo是上述TransactionInfo模型中的外键。

-------------------------- 更新 --------------------------

我的model.py文件:

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

Anyone?


你能展示一下你的模型代码吗? - Hieu Nguyen
我已经编辑了我的问题并附上了我的模型。 - Maverick
@GlynJackson 我不太确定,因为我需要将付款字段更改为1,否则默认为0。 - Maverick
1个回答

7
你需要调用:
obj.subscriptionInfo.save()

由于它在一个单独的模型中,所以它将看起来像这样:
def save_model(self, request, obj, form, change):
    #SUCCESS ACTIONS
    obj.subscriptionInfo.paid = 1
    obj.subscriptionInfo.save()
    obj.save()

太棒了!!非常感谢 :) - StreetCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接