【问题标题】:ManyToMany field as an argument to .objects.create() functionManyToMany 字段作为 .objects.create() 函数的参数
【发布时间】:2015-11-20 13:31:50
【问题描述】:

我有 2 个课程,DesignOrder。我正在尝试在我的 views.py 中创建一个 Order 对象,并且我想将 Design 对象作为 .objects.create() 的参数 当我这样做时,我收到此错误:“'design' is an invalid keyword argument for this function” 我认为这是因为 Design 是我的 Order 模型中的 ManyToMany 字段。和想法我该怎么办? 太感谢了。 模型.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/")

【问题讨论】:

  • 你试过order = Order(design=design,...)吗?
  • 尝试使用 order.design.add(design)。你不能在 create() 中传递它
  • @AjayGupta 感谢您的帮助。你是对的。

标签: python django many-to-many views models


【解决方案1】:

无法在create 中添加ManytoManyField,因为ManyToManyFields 涉及数据库查询的中间表。

你需要两个查询:

order=Order.objects.create(customer=customer, date=now, number=number)
order.design.add(design)

【讨论】:

  • 非常感谢@Leistungsabfall。问题解决了:)
猜你喜欢
  • 2011-04-26
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 2019-11-29
相关资源
最近更新 更多