保存一次后,Django Model不会更新

时间:2013-08-14 19:20:43

标签: django django-views

我被困在这5个小时并且无法解决它!我减掉了一些脂肪。 有谁知道为什么我的设计首先保存,但它不会使用文件主键更新?

如果我在第一个design.files_id = 12之前放置design.save(),它将保存该整数。但是如何让这个表格重新保存呢?我甚至试图用新的主键design = store_models.Design.objects.get(pk = design.pk)重新选择模型而没有运气。

    form = SubmitDesignForm(request.POST, request.FILES)

    if form.is_valid():

        design = form.save(commit = False)
        design.user = request.user
        design.save()
        form.save_m2m()

        # Files
        posted_files = request.FILES.getlist('file')
        if posted_files:

            files = Files()
            files.save()
            print files.pk # Returns a Intenger

            design.files_id = files.pk
            design.save()
            # Always leaves the thing 

注意:代码在DB for Files中成功创建数据并上传它们 - 我无法获得要引用的主键。

2 个答案:

答案 0 :(得分:1)

这是多么令人沮丧..这就是我做错了:

设计models.py

def save(self):
    if self.download_price is None:
        self.download_price = '0.00'
        super(Design, self).save()

使用下载价格保存项目时没有调用Super,因此修复了它:

def save(self):
    if self.download_price is None:
        self.download_price = '0.00'

    super(Design, self).save()

对不起,我忘了把它包括在内,直到我坐在马桶上,我才意识到这一点。

答案 1 :(得分:1)

您是否需要设置FK对象而不是密钥?我不认为你直接插入FK。 尝试这样的事情(不是100%的语法):

design.files = Files.objects.get(pk=files.pk)
design.save()

这样的事情。 当然,你已经有一个名为files的变量,所以你不需要做get。 您应该可以从命令行尝试它。