最近在用django写一个设备管理系统,在view的地方遇到了一些关于数据库的问题。

最近在用django写一个设备管理系统,在view的地方遇到了一些关于数据库的问题。

问题描述:

因为model写的是一个人员信息,一个设备信息,又人和设备是相联系的,所以又写了一个人员与设备相联系的信息,但用的是

ForeignKey,然后需要统计装备的出入口,就不知道该怎么算了。

下面是model的部分代码:

from django.db import models


# Create your models here.
class Stu(models.Model):
    GROUP = (
    )
    name = models.CharField(max_length=10)  # 姓名
    stu_ID = models.CharField(max_length=30)  # 学号
    detachment = models.CharField(max_length=10)  # 
    group = models.CharField(max_length=10, choices=GROUP)  # 

    def __str__(self):
        return self.name


class Equip(models.Model):
    e_ID = models.CharField(max_length=100)  # 设备编号
    model = models.CharField(max_length=100)  # 种类
    sto_time = models.DateTimeField(blank=True, null=True)  # 入库时间
    rfid = models.CharField(max_length=100, blank=True, null=True)

    def __str__(self):
        return self.e_ID


class Ute(models.Model):  # 定人定物信息
    stuname = models.ForeignKey(Stu, on_delete=models.CASCADE, related_name='c_order')  # 使用者名字
    equip = models.ForeignKey(Equip, on_delete=models.CASCADE, related_name='e_order')  
    rfid = models.CharField(max_length=100, blank=True, null=True)  # 设备RFID号

    def __str__(self):
        return str(self.stuname)


class Info(models.Model):
    GROUP = (
     
    )
    username = models.ForeignKey(Ute, on_delete=models.CASCADE, related_name='u_stuname')  # 使用者名字
    rfid = models.CharField(max_length=100, blank=True, null=True)
    equip = models.CharField(max_length=100, blank=True, null=True)
    state = models.CharField(max_length=10, choices=GROUP)  # 状态
    delivery_time = models.DateTimeField(blank=True, null=True)
    storage_time = models.DateTimeField(blank=True, null=True)

因为是第一次接触django,有很多不懂的地方:

下面是view的数据添加段:

                i_form = InfoForm(request.POST)
            if i_form.is_valid():
                name_get = i_form.cleaned_data['username']
                id_get= Stu.objects.filter(name=name_get).id
                rfid_get =  Ute.objects.filter(stuname_id=id_get).rfid  #这里出的问题
                equip_get = Ute.objects.filter(stuname_id=id_get).equip  #这里出的问题
                state_get = i_form.cleaned_data['state']
                det_get = i_form.cleaned_data['delivery_time']
                sto_get = i_form.cleaned_data['storage_time']
                if sto_get is None:

                    det_get = timezone.now()
                info = Info.objects.create(username=name_get, rfid=rfid_get, equip=equip_get, state=state_get, delivery_time=det_get,
                                           storage_time=sto_get)
                info.save()

就是不清楚rfid和equip该怎么获取ute里面的信息。

 

这个是ute保存的数据

所以你三个查询全用的filter  如果能保证唯一性,    可以直接 first().id ,如果不唯一, name你所有的filter都需要遍历才能取出对应值, 而不是filter过后就取 这样会报错