Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何正确构建我的模型?_Python_Django_Python 3.x_Django Models - Fatal编程技术网

Python 如何正确构建我的模型?

Python 如何正确构建我的模型?,python,django,python-3.x,django-models,Python,Django,Python 3.x,Django Models,我现在正在使用django编写一个程序,我的问题是我对构建模型感到困惑。 我在不同的应用程序中制作了两个模型,即用户和设备。关系是用户可以借用1到n个设备,但每个设备只能由一个用户持有。然后,在用户类中,我需要一个属性借用设备,它可以存储设备类(他借用的所有设备),在设备类中,我需要一个属性,它可以帮助我跟踪谁借用了这个设备 以下是我的代码,我不知道如何写,任何建议将不胜感激 用户/模型 from django.db import models from device.models import

我现在正在使用django编写一个程序,我的问题是我对构建模型感到困惑。 我在不同的应用程序中制作了两个模型,即用户和设备。关系是用户可以借用1到n个设备,但每个设备只能由一个用户持有。然后,在用户类中,我需要一个属性借用设备,它可以存储设备类(他借用的所有设备),在设备类中,我需要一个属性,它可以帮助我跟踪谁借用了这个设备

以下是我的代码,我不知道如何写,任何建议将不胜感激

用户/模型

from django.db import models
from device.models import Device


class User(models.Model):
    username = models.CharField(max_length=20)
    password = models.CharField(max_length=20)
    borrowed_device = models.ForeignKey('Device', on_delete=models.CASCADE(), related_name='borrowed_device')
    # id = models.IntegerField()

    class Meta:
        ordering = ('username', )
设备/型号

from django.db import models
from user.models import User


class Device(models.Model):
    DEVICE_TYPE = {('chemistry', 'chemistry'), ('physics', 'physics'), ('computer', 'computer'), ('biology', 'biology')}
    device_id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=20)
    type = models.CharField(max_length=20, choices=DEVICE_TYPE)
    bought_in_time = models.DateTimeField(auto_now_add=True)
    last_used_time = models.DateTimeField(auto_now=True)
    # number = models.IntegerField(default=1)
    status = models.BooleanField(default=False)
    user = models.ForeignKey(User, on_delete=models.CASCADE(), related_name='user')

    class Meta:
        ordering = ('type', '-bought_in_time')

    def __str__(self):
        return self.name

    # def get_absolute_url(self):
    #     return reverse('')

您的意思是用户可以持有1。。n个设备,因此用户和设备模型之间存在一对多关系,如下所示:

class User(models.Model):
    username = models.CharField(max_length=20)
    password = models.CharField(max_length=20)
    borrowed_device = models.ManyToManyField('Device' )

    class Meta:
        ordering = ('username', )
您不需要设备模型中的
user=models.ForeignKey(user,on_delete=models.CASCADE(),related_name='user')
字段

device.user\u set.all()
将检索与该特定设备关联的所有用户。
因此,在您的情况下,您只需要确保特定设备是否与任何用户关联。如果没有,您可以将设备添加到用户manytomanyfield。

谢谢,我仍然有一个问题:如何存储用户borroing设备的历史记录,例如,借用设备a1中的人员,以及如何将借用历史记录保存在属性中?我是说他借的所有设备。我应该在用户中创建一个列表来存储它或其他什么吗?@Richard,如果你想维护历史记录。模型中应该有一个不同的列(manytomany),表示设备的历史记录/日志。您只需在该列中添加,而不从该列中删除,或者,您可以拥有具有两列(用户、设备)的另一个模型(历史记录),并在该模型上保存。