class ProductGroup(models.Model):
group_sku = models.CharField(unique=True, max_length=255)
brand = models.CharField(max_length=255)
...
class Product(models.Model):
product_sku = models.CharField(unique=True, max_length=255)
color = models.CharField(max_length=255)
size = models.CharField(max_length=255)
product = models.ForeignKey(Product, limit_choices_to=Q(group_sku__in=product_sku))
...
我通过python脚本从XML文件将数据导入Django。
group_sku的格式为" GROUP123"
product_sku的格式为" GROUP123-BLUE-M" (或类似的)每组中有多个产品
如何定义外键关系,以便每个产品都链接到其各自的ProductGroup?或者随时告诉我,如果我以完全错误的方式解决这个问题。
使用Django 1.6.5,Python 2.7和MySQL
答案 0 :(得分:1)
模型应该像这样定义。使用ForeignKey to Group的Product group字段,表示Product属于Group。
class ProductGroup(models.Model):
group_sku = models.CharField(unique=True, max_length=255)
brand = models.CharField(max_length=255)
...
class Product(models.Model):
product_sku = models.CharField(unique=True, max_length=255)
color = models.CharField(max_length=255)
size = models.CharField(max_length=255)
group = models.ForeignKey(Group)
在您的脚本中,您应首先获取所有组并创建它们,然后解析(您可以使用正则表达式)product_sku以了解它属于哪个组。你必须有类似的东西:
# save group
group = Group(group_sku=group_sku_from_xml, ...)
group.save()
# later that script...
group_sku = get_group_from(product_sku_from_xml)
group = Group.objects.get(group_sku=group_sku)
# save product
product = Product(group=group, product_sku=product_sku_from_xml, ...)
product.save()