python - django 唯一对象(不是唯一字段)?
问题描述
如何制作一个唯一的对象(不是每个字段唯一的)
例如:
名称:本田
类别:汽车
成功
名称:本田
类别:自行车
成功
名称:本田
类别:自行车
失败,因为所有字段与另一个对象具有相同的值
如果我unique
在现场使用,第二种情况将失败,因为已经创建了本田(名称)
我的代码:
class Category(models.Model):
name = models.CharField(max_length=127,unique=True)
def __str__(self):
return self.name
class Brand(models.Model):
name = models.CharField(max_length=127,unique=True)
category = models.ForeignKey(Category,on_delete=models.CASCADE)
def __str__(self):
return self.name
解决方案
Django 提供了一个名为 unique 的 Meta 选项,它似乎满足了这个用例:
class Brand(models.Model):
name = models.CharField(max_length=127)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
class Meta:
unique_together = [[“name”, “category”]]
Django 文档指出,尽管这可能已被弃用,并推荐功能更全的 UniqueConstraint 元选项
class Meta:
constraints = [
UniqueConstraint(fields=[“name”,”category”], name=“unique_object”)
]
推荐阅读
- c# - XPath 单击 Web 表中的切换按钮
- flutter - 文本小部件:在 onTap Flutter 之后,Text() 不会使用新数据更新显示
- jquery - 带有 json 代码的光滑滑块会使页面变慢
- reactjs - 缓存异步数据
- python - 如何使用python在MYSQL中执行IF查询?
- javascript - 如何找到连接的两条线的 Theta 1 和 theta 2 倒数
- vb.net - .Net 4.5.1 网站的 Azure Blob 客户端库无法安装
- html - Angular 10:Observable 未按预期工作
- python - 我如何使用连接到 Arduino UNO 的 Arduino 超声波传感器来使用 Pyfirmata 或 Python 通常测量距离?
- facebook-login - django-allauth facebook 登录 用户 电子邮件