【发布时间】:2017-12-13 23:50:48
【问题描述】:
我正在处理一些 Django 项目(第一次),经过大量搜索后,我不知道如何在创建后正确更新对象属性。我有这样的models.py
from django.db import models
import os
# Create your models here.
class Place(models.Model):
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Add templates folder for dynamic usage, os independent
TEMPLATE_DIR = os.path.join(BASE_DIR, "templates/places")
name = models.CharField(max_length=100, unique=True)
display_name = models.CharField(max_length=100)
floor = models.DecimalField(max_digits=3, decimal_places=0)
template = models.FilePathField(path=TEMPLATE_DIR, match=".*html")
url = models.URLField(unique=True)
# Display name of object in object list view
def __str__(self):
return self.name
问题是如何在对象创建 url 到这个特定对象后更新 url 属性,它应该类似于(基本 url + object_id 我知道 object_id 是在对象创建后创建的)但是在搜索文档之后我不知道如何正确地做到这一点。
我尝试了 get_absolute_path,但没有成功。
也许是某种 post_save 方法覆盖?
【问题讨论】:
-
为什么要在创建后更新同一个对象?保存前不计算吗?
-
@AvinashRaj 因为我写了正确的 url 我需要在对象保存到 DB 后创建的 object_id,如果有一些方法可以更早地获取 id,我愿意接受建议。跨度>
-
好的,你可以使用 django post_save 信号..
标签: python django object model