ManyToMany 字段作为 .objects.create() 函数的参数
ManyToMany field as an argument to .objects.create() function
我有 2 个 类、Design
和 Order
。我正在尝试在我的 views.py 中创建一个 Order 对象,我想将 Design 对象作为 .objects.create() 的参数
当我这样做时,出现此错误:“'design' 是此函数的无效关键字参数”
我认为这是因为 Design 是我的 Order 模型中的 ManyToMany 字段。和想法我该怎么办?
太感谢了。
models.py:
class Design(models.Model):
dimension=models.CharField(max_length=15, blank=True, null=True)
image=models.FileField(upload_to='images/%Y/%m/%d')
number_of_colors=models.IntegerField(blank=True, null=True)
sides=models.IntegerField(verbose_name='side(s)')
class Order(models.Model):
o_type=models.CharField(max_length=15, verbose_name='Order type', null=True)
number=models.IntegerField()
date=models.DateField()
status=models.CharField(max_length=25, null=True, blank=True)
delivery_date=models.DateField(null=True, blank=True)
customer=models.ForeignKey(Customer)
design=models.ManyToManyField(Design)
outSource=models.OneToOneField(OutSource, blank=True, null=True)
views.py:
def upload(request):
if request.method=='POST':
print "entered upload"
image=request.FILES.get('upload', False)
sides=request.POST.get('sides', False)
number=request.POST.get('number', False)
design=Design.objects.create(image=image, sides=sides)
now = datetime.datetime.now()
customer=Customer.objects.get(user=request.user)
order=Order.objects.create(customer=customer, date=now, number=number, design=design)
return HttpResponseRedirect("/home/")
无法在 create
中添加 ManytoManyField
,因为 ManyToManyField
涉及数据库查询的中间表。
您需要对其进行两次查询:
order=Order.objects.create(customer=customer, date=now, number=number)
order.design.add(design)
我有 2 个 类、Design
和 Order
。我正在尝试在我的 views.py 中创建一个 Order 对象,我想将 Design 对象作为 .objects.create() 的参数
当我这样做时,出现此错误:“'design' 是此函数的无效关键字参数”
我认为这是因为 Design 是我的 Order 模型中的 ManyToMany 字段。和想法我该怎么办?
太感谢了。
models.py:
class Design(models.Model):
dimension=models.CharField(max_length=15, blank=True, null=True)
image=models.FileField(upload_to='images/%Y/%m/%d')
number_of_colors=models.IntegerField(blank=True, null=True)
sides=models.IntegerField(verbose_name='side(s)')
class Order(models.Model):
o_type=models.CharField(max_length=15, verbose_name='Order type', null=True)
number=models.IntegerField()
date=models.DateField()
status=models.CharField(max_length=25, null=True, blank=True)
delivery_date=models.DateField(null=True, blank=True)
customer=models.ForeignKey(Customer)
design=models.ManyToManyField(Design)
outSource=models.OneToOneField(OutSource, blank=True, null=True)
views.py:
def upload(request):
if request.method=='POST':
print "entered upload"
image=request.FILES.get('upload', False)
sides=request.POST.get('sides', False)
number=request.POST.get('number', False)
design=Design.objects.create(image=image, sides=sides)
now = datetime.datetime.now()
customer=Customer.objects.get(user=request.user)
order=Order.objects.create(customer=customer, date=now, number=number, design=design)
return HttpResponseRedirect("/home/")
无法在 create
中添加 ManytoManyField
,因为 ManyToManyField
涉及数据库查询的中间表。
您需要对其进行两次查询:
order=Order.objects.create(customer=customer, date=now, number=number)
order.design.add(design)