我有两个看起来像这样的模型:
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)
我做错了什么?谢谢你的回答。
答案 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()