相关疑难解决方法(0)

验证django admin中的依赖内联

我正在使用Django 1.4,我想设置验证规则来比较不同内联的值.

我有三个简单的课程

在models.py中:

class Shopping(models.Model):
    shop_name = models.CharField(max_length=200)

class Item(models.Model):
    item_name = models.CharField(max_length=200)
    cost = models.IntegerField()
    item_shop = models.ForeignKey(Shopping)

class Buyer(models.Model):
    buyer_name = models.CharField(max_length=200)
    amount = models.IntegerField()
    buyer_shop = models.ForeignKey(Shopping)
Run Code Online (Sandbox Code Playgroud)

在admin.py中:

class ItemInline(admin.TabularInline):
    model = Item

class BuyerInline(admin.TabularInline):
    model = Buyer

class ShoppingAdmin(admin.ModelAdmin):
    inlines = (ItemInline, BuyerInline)
Run Code Online (Sandbox Code Playgroud)

因此,例如,可以以10美元购买一瓶朗姆酒,以8美元购买伏特加酒.迈克支付15美元,汤姆支付3美元.

目标是防止用户使用不匹配的金额保存实例:已支付的金额必须与项目成本的总和相同(即10 + 8 = 15 + 3).

我试过了:

  • 在Shopping.clean方法中引发ValidationError.但内联尚未更新,因此总和不正确
  • 在ShoppingAdmin.save_related方法中引发ValidationError.但是在这里提出ValidationError会给出一个非常用户不友好的错误页面,而不是重定向到更改页面,并带有一个很好的错误消息.

有没有解决这个问题的方法?客户端(javascript/ajax)验证最简单吗?

python django django-admin

14
推荐指数
1
解决办法
6588
查看次数

标签 统计

django ×1

django-admin ×1

python ×1