私信  •  关注

rchurch4

rchurch4 最近创建的主题
rchurch4 最近回复了
7 年前
回复了 rchurch4 创建的主题 » 在多对多关系中使用表单的django更新字段

所以首先,我不知道你 form 看起来,但我猜。首先,您的错误是因为您试图调用 save 对类型为的变量的函数 float 。你应该保存表单,而不是数字。你需要做所有的计算 total_days... current_balance = diff... 打电话之前 form.save() 。在完成这些计算之后,您应该将 current_balance form.fields['Leave_current_balance'] ,然后保存表单。

7 年前
回复了 rchurch4 创建的主题 » django createview-modelform与多对多inlineformset valueerror

好吧,所以我觉得这里有几个问题,你的 post form_valid() 方法。我参考了我自己的内联表单集实现,以了解您的不同做法。

首先,我认为岗位方法的第一行应该是 self.object = self.get_object() .

第二, weather_forecast_form = WeatherForecastFormset(self.request.POST) 应该是 weather_forecast_form = WeatherForecastFormset(self.request.POST, instance=self.object) .
注意这里我们得到的对象和在表单集中的实例中使用它之间的关系。这就是post方法的全部内容。

现在,在我自己的实现中,我有许多表单集,因此我按如下循环遍历每个表单集(如果将表单集放入列表并传递给 form_valid ):

def form_valid(self, form, formsets):
    self.object = form.save()
    for formset in formsets:
        formset.instance = self.object
        formset.save()
    return HttpResponseRedirect(self.get_success_url())

注意,我们在这里完全保存父窗体,包括提交它。然后保存所有表单集。如果要保留单个表单集,可以很容易地将上述代码更改为以下代码:

def form_valid(self, form, weather_forecast_form):
    self.object = form.save()
    weather_forecast_form.instance = self.object
    weather_forecast_form.save()
    return HttpResponseRedirect(self.get_success_url())

你在问题底部报告的错误是 form.save(commit=False) . 现在的情况是,你在“假装”拯救父母,然后试图完全拯救孩子。数据库没有父级的记录,因此它会弹出该错误。必须在保存多对多记录之前提交(至少以我的经验)。

7 年前
回复了 rchurch4 创建的主题 » 如何访问django外文类中的主类id?

欢迎来到StackOverflow!所以,我假设你的代码是这样的:

class Album(models.Model):
    id = models.IntegerField()
    album_name = models.CharField(max_length=100)

class Song(models.Model):
    id = models.IntegerField()
    song_name = models.CharField(max_length=100)
    album = models.ForeignKey(Album, related_name='songs')

假设你做了一张歌的唱片 song = Song.objects.get(id=x) . 然后您将通过以下方式获取唱片集ID: song.album.id