首页 > 解决方案 > Django 一对多(0..4)关系

问题描述

我想知道是否有某种方式可以建立关系0..4。

我的意思是,1 个用户有 0 到 4 个设备,1 个设备属于一个用户。

我怎么能代表它?那 0..4 可以表示,还是应该在我的程序逻辑上控制?

标签: djangoforeign-keysone-to-manyrelation

解决方案


创建新设备时,在 clean 方法中检查该用户的设备不超过 4 个。就像是:

class Device(models.Model):
    user = models.ForeignKey(User)
    # ...

    def clean(self):
        user_devices = self.user.device_set.all()
        if self.pk:
            # Exclude me
            user_devices = user_devices.exclude(pk=self.pk)

        if user_devices.count() >= 4:
            raise ValidationError({'user': "Cant have more than 4 devices"})

推荐阅读