gpt4 book ai didi

python - 如何在 Django 中默认 IntegerField

转载 作者:太空狗 更新时间:2023-10-29 20:22:57 24 4
gpt4 key购买 nike

我在研究一些 Django,遇到了一个小问题。

我正在寻找一种使 suit_length 默认等于客户高度的方法。这种代码对我有用:

    class Customer(models.Model):
name = models.CharField(max_length=20)
height = models.IntegerField(default=170)

class Suit(models.Model)
customer = models.ForeignKey(Customer)
suit_design = models.CharField(max_length=100)
suit_length = models.IntegerField(default=0)
def get_height(self):
self.suit_length = self.customer.height
return

但每次我创建一个新的 Suit 时,它的默认 suit_length = 0,我必须运行 get_height() 才能得到我想要的。有没有办法将 suit_length 默认为 customer.height 并避免每次创建新套装时都运行 get_height() ?我可能正在寻找这样的东西:

    class Customer(models.Model):
name = models.CharField(max_length=20)
height = models.IntegerField(default=170)

class Suit(models.Model)
customer = models.ForeignKey(Customer)
suit_design = models.CharField(max_length=500)
suit_length = models.IntegerField(default=lambda:self.customer.height)

但是这段代码不起作用。

最佳答案

Django 使用 save() 方法来实际保存数据。你可以像这样覆盖它:

class Suit(models.Model):
def save(self):
if self.suit_length == 0:
self.suit_length = self.customer.height
super(Suit, self).save()

它不会覆盖默认值,但可以实现您的目标。

关于python - 如何在 Django 中默认 IntegerField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22892651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com