【问题标题】:Querying based on form input and string operations in djangodjango中基于表单输入和字符串操作的查询
【发布时间】:2018-11-23 18:34:11
【问题描述】:

Django fields in form

正如问题 4 所述,我需要获取表单输入并为上传的每张图片计算 design-id。如何查询数据库以获取类别、面料、制造商和制造商位置的缩写,并连接所有这些字符串以生成和存储设计 ID?

我已将此代码添加到我的views.py

image = form.save(commit=False)

cat = Category.objects.get(name=image['category'])      
fab = Fabric.objects.get(name=image['fabric'])
manu = Manufacturer.objects.get(name=image['manufacturer'])
setcat = Group.objects.get(name=image['set_cat'])
string = cat.abbr + "-" + fab.abbr + "-" + manu.name_abbr + "-" + manu.loc_abbr + "-" + image['selling_price'] + "-" + setcat.abbr + "-" + image['set_cat_no']
image['design_id'] = string

image.save()

这给了我错误 - 'Images' 对象没有属性 'getitem'

models.py 中的我的图片模型是这个

class Images(models.Model):
    design_id = models.CharField(max_length=128)
    file = models.ImageField(upload_to='images')
    cost_price = models.FloatField()
    category = models.ForeignKey(Category, on_delete=models.CASCADE, blank=False)
    fabric = models.ForeignKey(Fabric, on_delete=models.CASCADE, blank=False)
    manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE, blank=False)
    selling_price = models.FloatField()
    aliveness = models.IntegerField(default=1)
    date_added = models.DateTimeField(default=datetime.datetime.now)
    set_cat = models.ForeignKey(Group, on_delete=models.CASCADE, blank=False)
    set_cat_no = models.IntegerField()
    set_cat_name = models.CharField(max_length=50, blank=True)
    visit_count = models.IntegerField(default=0)

我尝试从__unicode__ 返回 unicode() 但这也不起作用。

【问题讨论】:

  • 请自己动手,如有错误请寻求帮助。
  • 我已经编辑了问题,但出现了错误。
  • 有人请回答。急需这个。
  • 请更准确地描述您的错误
  • 你能在调试中打印image吗?是否可以通过image['cateogry'] 方式获取数据?我认为您应该使用image.cleaned_data 或其他方式

标签: django database


【解决方案1】:

您不能通过字典表示法访问模型实例属性。您需要使用点符号,就像您在其他任何地方所做的那样。

image.design_id = string

【讨论】:

  • 即使尝试了这个,我也会遇到同样的错误。图片的对象没有属性__getitem__
  • 因为你在代码的不同地方都在做,这只是一个例子。您应该阅读错误消息。比如Category.objects.get(name=image.category)等等。
  • 是的,我在所有这些地方都进行了更改并得到了同样的错误。
  • 您需要发布错误和完整的回溯。
  • 抱歉,它成功了。我没有改变一切。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
相关资源
最近更新 更多