我有以下型号:
class Device(models.Model):
id = models.CharField(max_length=10, primary_key=True)
def __str__(self):
return self.id
class User(models.Model):
id = models.CharField(max_length=10, primary_key=True)
device = models.ForeignKey(Device, blank=True, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.id
当我尝试添加新用户时,我需要知道将要添加到该用户的设备尚未使用。
如何检查该设备是否已有用户使用FK?
答案 0 :(得分:3)
您可以使用反向关系user_set
检查它:
device.user_set.exists()
答案 1 :(得分:2)
如果每个设备只能链接到一个用户,那么看起来你的模型是错误的。我会将外键移动到Device
模型。
class Device(models.Model):
user = models.ForeignKey('User', blank=True, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.id
如果每个用户也只能拥有一个设备,那么一对一的字段将是更好的选择。你可以将它放在任何一种型号上。
class User(models.Model):
id = models.CharField(max_length=10, primary_key=True)
device = models.OneToOneField(Device, blank=True, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.id
如果你的模型中的关系正确,那么你最终必须编写更少的验证码。