javascript - Django 根据其他字段动态设置字段值

标签 javascript django autocomplete django-forms django-admin

我正在尝试根据其他外部字段选择设置字段默认值。 基本上,这些是类:

class Product(models.Model):
        description = models.CharField('Description', max_length=200)
        price = models.FloatField('Price')

class Sell(models.Model):
        product = models.ForeignKey(Product)
        price = models.FloatField('Price')

每个“产品”都有一个默认价格(或建议价格),因此当用户在管理页面中想要添加一个新的销售并选择一个产品时,我需要从 Product.price 动态复制到Sell.price 建议的价格。 我不能使用“保存”方法,因为用户可以在那一刻进行更改。

是否有必要显式使用 JavaScript?或者在 Django 中有一种优雅的方式来做到这一点吗?

最佳答案

您可以使用预保存 Hook 或覆盖 Sell 模型的 save() 方法来解决这个问题。

from django.db import models

class Product(models.Model):
    description = models.CharField('Description', max_length=200)
    price = models.FloatField('Price')

class Sell(models.Model):
    product = models.ForeignKey(Product)
    price = models.FloatField('Price')

    # One way to do it:
    from django.db.models.signals import post_save
    def default_subject(sender, instance, using):
        instance.price = instance.product.price
    pre_save.connect(default_subject, sender=Sell)

    # Another way to do it:
    def save(self, *args, **kwargs):
        self.price = self.product.price
        super(Sell, self).save(*args, **kwargs)

关于javascript - Django 根据其他字段动态设置字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11210396/

相关文章:

javascript - Jquery 关闭自动完成列表

Jquery 自动完成 - 用于结果列表的自定义 html

javascript - 由 Flux Store 控制的 React Form(最佳实践?)

django - Django 管理媒体文件在 Google App Engine 上的位置

javascript - JQuery 自动完成源未更新

Django form.is_valid() 不调用方法 clean_<fieldname>

python - 如何将 JSON 转储从表单填充到 Django 模板?

javascript - 自定义 symfony view.yml 文件

javascript - 使用 jQuery 检查 DOM 元素的继承可见性

javascript - 如何重载javascript中的函数?