通过其他模型将数据保存到模型中

时间:2016-01-09 02:33:39

标签: django

我有两个看起来像这样的模型:

class Responde(models.Model):
        id = models.AutoField(primary_key=True, unique=True)

class Product(models.Model):
        responde = models.ForeignKey(Responde, null=True)
        name = models.CharField(max_length=255)
        description = models.CharField(max_length=10, blank=True, null=True)
        price = models.CharField(max_length=50, blank=True, null=True)

我有一个解析xml文件或类文件对象的脚本。比我将xml数据保存到数据库。

for p in products_xml:
   xmldata = Product()
   xmldata.name = p['ProductName']
   xmldata.description = p['ProductDescription']
   xmldata.price = p['ProductPrice']

   xmldata.save()

一切正常。但我需要创建Responde对象,而不是通过Responde对象将数据保存到Product模型中。我尝试使用此代码

 for p in products_xml:
    r = Responde()
    name = p['ProductName']
    hotelcode = p['ProductDescription']
    country = p['ProductPrice']
    new_responde = r.product_set.create(name, description, price)

但我有错误:

create() takes exactly 1 argument (4 given)

我做错了什么?谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

您创建新Product的代码是正确的。创建Responde对象后,您可以将其设置为产品的外键。

# create a Responde object
r = Responde.objects.create() 

for xmldata in products_xml:
    p = Product(
        name=xmldata['ProductName'],
        description=xmldata['ProductDescription'],
        price=xmlData['ProductPrice'],
    )

    # add product to responde "r"
    p.responde = r
    p.save()

# this queryset contains all the products added above
r.product_set.all()