【问题标题】:How to make two fields unique of same model in django如何在 django 中使同一模型的两个字段唯一
【发布时间】:2019-09-13 07:20:56
【问题描述】:

我正在使用 DispensingUnit 类名并有两个字段 'keypad1_sr_no_hw''keypad2_sr_no_hw'

我们如何比较这两个字段的唯一性,这意味着两个字段永远不会具有相同的值组合?

使用了这个unique_together,但它不起作用。

class Meta:
        unique_together = (("keypad1_sr_no_hw", "keypad2_sr_no_hw",))

class DispensingUnit(models.Model):
        keypad1_sr_no_hw = models.CharField(U'Keypad 1', max_length=20 ,)
   keypad2_sr_no_hw = models.CharField(U'Keypad 2', max_length=20,)

keypad1_sr_no_hw 中的值是 KP2019310001keypad2_sr_no_hw KP2019310001 并且仍然可以保存。 我希望当两个值相同时,它会显示错误并且值不会被存储。

【问题讨论】:

  • keypad1_sr_no_hw 和 keypad2_sr_no_hw 的所有值在所有 DispensingUnit 中是否应该是唯一的?或者它们对于 DispensingUnit 的一个实例是否不一样?

标签: django-models django-rest-framework mysql-connector-python


【解决方案1】:

你有没有尝试过覆盖保存方法,做一些事情

def save(self, *args, **kwargs):
    if self.keypad1_sr_no_hw == self.keypad2_sr_no_hw:
        raise ValidationError("keypad1_sr_no_hw and keypad2_sr_no_hw have same values")
    return super(DispensingUnit, self).save(*args, **kwargs)

我知道它可能不是您想要的,但它会为您完成这项工作,我不确定是否存在任何可以比较多个字段的唯一性的内置 django 属性。

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 1970-01-01
    • 2012-03-12
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多