Sql Django外键字段和限制选项

Sql Django外键字段和限制选项,sql,django,Sql,Django,我正在通过python脚本将数据从XML文件导入Django group_sku的格式为“GROUP123” 产品sku的格式为“GROUP123-BLUE-M”(或类似),每个组中有多个产品 如何定义外键关系,以便每个产品都链接到其各自的ProductGroup?或者,如果我完全走错了方向,请随时告诉我 使用Django 1.6.5、Python 2.7和MySQL,模型的定义应如下所示。产品组字段的ForeignKey为group,表示产品属于组 class ProductGroup(mod

我正在通过python脚本将数据从XML文件导入Django

group_sku的格式为“GROUP123”

产品sku的格式为“GROUP123-BLUE-M”(或类似),每个组中有多个产品

如何定义外键关系,以便每个产品都链接到其各自的ProductGroup?或者,如果我完全走错了方向,请随时告诉我


使用Django 1.6.5、Python 2.7和MySQL,模型的定义应如下所示。产品组字段的ForeignKey为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)
    product = models.ForeignKey(Product, limit_choices_to=Q(group_sku__in=product_sku))
    ...
在脚本中,您应该首先获取所有组并创建它们,然后解析(可以使用正则表达式)产品sku以了解它属于哪个组。你必须有类似的东西:

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)

非常感谢…整个下午我都在绞尽脑汁想这个。我真的不明白ForeignKey字段是如何工作的。现在我知道了!
# 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()