如何更新相关模型拥有的对象数?

时间:2019-08-12 14:47:41

标签: python-3.x django-2.2

我有两个模型,为简单起见,我们将它们称为Owner和Player。我需要动态更新所有者拥有的玩家总数。我已经找到了一些代码(来自此post)来将数字增加一个,但是如果一个玩家不再由该拥有者拥有,我如何使它工作呢?我还找到了一些代码,该代码将通过玩家价格字段中的价格减少所有者的模型字段,但是还没有找到一种方法,如果玩家不再由该所有者拥有该钱,则可以返还该钱。

models.py

class Owner(models.Model):
    name = models.CharField(
        'Name',
        max_length=50,
    )
    money = models.DecimalField(
        'Money',
        max_digits=8,
        decimal_places=2,
        blank=True,
        null=True,
    )
    playersClaimed = models.IntegerField(
        'Players Claimed',
        blank=True,
        null=True,
    )
class Player(models.Model):
    name = models.CharField(
        'Name',
        max_length=50,
    )
    price = models.DecimalField(
        'Cost of Acquisition'
        max_digits=8,
        decimal_places=2,
        blank=True,
        null=True,
    )
    owner = models.ForeignKey(
        Owner,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
    )

我尝试将其添加到我的admin.py中,以便可以在管理面板中尝试它:

admin.py

class PlayerAdmin(admin.ModelAdmin):
    ...
    def save_model(self, request, obj, form, change):
        obj.owner.playersClaimed += 1
        obj.owner.money -= obj.price
        obj.owner.save()
        super().save_model(request, obj, form, change)

任何帮助,将不胜感激。

0 个答案:

没有答案