Python 如何正确构建我的模型?
我现在正在使用django编写一个程序,我的问题是我对构建模型感到困惑。 我在不同的应用程序中制作了两个模型,即用户和设备。关系是用户可以借用1到n个设备,但每个设备只能由一个用户持有。然后,在用户类中,我需要一个属性借用设备,它可以存储设备类(他借用的所有设备),在设备类中,我需要一个属性,它可以帮助我跟踪谁借用了这个设备 以下是我的代码,我不知道如何写,任何建议将不胜感激 用户/模型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
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),表示设备的历史记录/日志。您只需在该列中添加,而不从该列中删除,或者,您可以拥有具有两列(用户、设备)的另一个模型(历史记录),并在该模型上保存。