代码之家  ›  专栏  ›  技术社区  ›  CodeSpent

丹戈·曼尼托内?

  •  0
  • CodeSpent  · 技术社区  · 7 年前

    我有一个库存管理应用程序,里面是一个 Item() 表示产品的类。所有设备都将被序列化,因此稍后将有一个类来表示调用的每个设备 OnHand() .

    项目模型

    class Item(models.Model):
        name = models.CharField(max_length=100)
        description = models.CharField(max_length=100)
        manufacturer = models.ForeignKey('Manufacturer', blank=True, null=True, on_delete=models.SET_NULL)
        introduction = models.DateField(auto_now=True)
        quanity = models.IntegerField(default=0)
        is_retired = models.BooleanField(default=False)
        tags = models.ManyToManyField(Tag)
    
        def __str__(self):
            return self.name
    
        def add(self):
            pass
    
        def remove(self):
            pass
    
        def retire(self): # Rex came up with this, roll credits.
            pass 
    
        def count(self):
            pass
    

    我想要一个属性 一只手 那有 多对一 类型关系。

    现有模型概念

    class OnHand(models.Model):
        name = models.CharFiled(max_length=100)
        serial = models.CharField(max_length=80)
        asset = models.CharField(max_length=20)
    
        def __str__(self):
            return self.serial
    

    创建新的 手头 对象,我想将其与 项目 . 我该怎么做呢?

    结构示例

    • 项目
      • 名称=MacBook Pro
      • 说明=15.5“MacBook Pro
      • 手头
        • 序列号,资产标签
        • 序列号,资产标签
        • 序列号,资产标签

    当前测试代码

    def make_macbook():
        """ Create a Manufacturer for Apple """
        apple = Manufacturer(name='Apple', rep_name='Jason Wilburn', support_number='1-800-Apple')
        apple.save()
        print('Manufacturer name: {}'.format(apple))
    
        """ Create a Category for Laptops """
        laptop = Category(name='Laptops')
        laptop.save()
        print('Category name: {}'.format(laptop))
    
        """ Create a Tag for Mac """
        mac = Tag(title='mac')
        mac.save()
        print('Tag name: {}'.format(mac))
    
        """ Create a MacBook Item """
        macbook = Item(name='Macbook Pro', description='15.5" Macbook Pro, 2018 Model', manufacturer=apple)
        macbook.save()
        print('Item name: {}'.format(macbook))
    
        """ Create a MacBook OnHand item """
        newMac = OnHand(name='MacBook Pro 15.5"', serial='SC02XP0NRJGH5', asset='DEPSC02XP0NRJGH5', product=macbook)
        newMac.save()
    
        """ Add to Item's OnHand """
    

    现在,我主要是坚持增加 项目() 创建关系。

    1 回复  |  直到 7 年前
        1
  •  1
  •   devdob    7 年前

    您可以将现有模型中的外键添加到项目模型中以实现这一点。创建现有对象时,只需将其绑定到所需的项对象。

    class OnHand(models.Model):
       name = models.CharFiled(max_length=100)
       serial = models.CharField(max_length=80)
       asset = models.CharField(max_length=20)
       item = models.ForeignKey(Item)
    
       def __str__(self):
           return self.serial
    

    然后在您的视图中,当创建现有对象时,

    ...
    """ Create a MacBook Item """
    macbook = Item(name='Macbook Pro', description='15.5" Macbook Pro, 2018 Model', manufacturer=apple)
    macbook.save()
    print('Item name: {}'.format(macbook))
    
    """ Create a MacBook OnHand item """
    newMac = OnHand(name='MacBook Pro 15.5"', serial='SC02XP0NRJGH5', asset='DEPSC02XP0NRJGH5', product=macbook, item=macbook)
    newMac.save()
    ...
    

    希望这有帮助!