【发布时间】:2016-04-23 03:54:39
【问题描述】:
django 模型实例与数据库有关系,而当我将对象从 ModelName.objects.get() 传递到上层时。我不想暴露它可以访问数据库的操作,例如:save()、delete()。因此,我目前定义了另一个类(比如 Product),其中的属性与 Model 类(比如 ProductModel)中的属性几乎相同。 每次我需要实例时,我都会从另一个复制属性。应该有更好的做法,不是吗?
from django.db import models
class ProductModel(models.Model):
price = models.FloatField(default=0.0)
class Product(object):
def __init__(self):
self.id = 1
self.price = 12.3
【问题讨论】:
-
如果您不将其保存在引用模型(或管理员)的视图中,则无法访问该模型。用户不能直接访问模型实例,只能向视图提交数据。
-
谢谢。恐怕我没有很好地表达我的问题。如果我在一个函数中返回模型实例,而在另一个调用该函数的模块中,则实例方法是可调用的。
-
是的,通过您的代码。你到底想保护自己免受什么伤害?
-
@DanielRoseman 也许我需要一个模型实例的副本,它不再影响原始实例,但正如 Robert Moskal 的帖子所说,这将“失去强大的功能,如通过延迟加载关系和查询的能力查询集”。