我刚刚使用Django。我刚刚创建了我的模型并使用.cvs导入模块将信息迁移到我的sqlite3数据库。这是我的模块:
class Backlog(models.Model):
sales_order = models.CharField(max_length=30)
po_number = models.CharField(max_length=30)
order_number = models.IntegerField(blank=True)
line_number = models.IntegerField(blank=True)
ship_Set = models.IntegerField(blank=True)
product_id = models.CharField(max_length=30)
ordered_quantity = models.IntegerField(blank=True)
class Material(models.Model):
product_id = models.CharField(max_length=50)
tan_id = models.CharField(max_length=50)
现在我的表格中有信息,我想做以下事情:
product_id
的{{1}}是否在Backlog
的模型中,一旦发现它验证了Material
的前两位数字。如果tan_id
归类为74
,则'1'
归类为800
,其他设置为'3'
。 ('2'
格式通常为tan_id
,74-102345-03
)我的两个问题是:
如何做到这一点,如果我必须创建一个新列来添加每个800-120394-03
的信息。
答案 0 :(得分:1)
好的,鉴于您目前的型号,这里是您可能遇到的问题的可能解决方案:
for backlog in Backlog.objects.all():
try:
material = Material.objects.get(product_id = backlog.product_id)
if material.tan_id[0:2] == '74':
# Classify as 1
elif material.tan_id[0:2] == '80':
# Classify as 3
else:
# Classify as 2
except Material.DoesNotExist:
print("This material is not in backlog")
continue
此代码应循环遍历数据库中的每个Backlog实例,然后尝试查找关联的Material。如果它没有找到材料(在你的情况下没有积压),objects.get()会引发一个它不存在的异常,我们打印它不存在并继续循环。如果是,我们按照您的指定对其进行分类。可能需要稍微调整,但它应该给你想要解决这个问题的骨头。如果没有,请告诉我。