首页 > 解决方案 > 如何将唯一模型列表添加到 django 模型

问题描述

我正在开发一个仪表板应用程序,供客户使用 django 和 mariadb 数据库管理他们的设备。我有一个客户端模型(这是扩展用户模型)和代表单个唯一设备的设备模型。一位用户可以拥有多台设备,但一台设备只能分配给一位用户。

现在,在客户端模型中创建一个条目的最佳方法是什么,它将包含他分配的所有设备。Client.devices重要的是,一个设备(由唯一的设备 ID 表示)在所有表中只能出现一次。

这是可视化我的问题的代码:

class Client(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    devices = <?>


class Device(models.Model):
    type = models.PositiveSmallIntegerField(default=0x00)
    id = models.PositiveSmallIntegerField(primary_key=True, default=0x00)
    user = models.ForeignKey(User, unique=False, on_delete=models.CASCADE)

我觉得答案就在那里,但我不确定其他类似的主题是否符合我的独特性

标签: djangodjango-modelsmariadb

解决方案


Django 有distinct()查询子句。要获得分配给客户端的不同设备,请尝试以下操作:

unique_devices = Device.objects.filter(user=client.user).distinct()

这是关于distinct()的官方文档


推荐阅读